欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

大话数据结构——链表插入删除操作

程序员文章站 2022-03-22 20:03:21
...

大话数据结构——链表插入删除操作

链表删除:

删除L的第i个数据元素,并用e返回其值,L的长度减1.
循环结束后,p指向第i-1个结点,p->Next指向第i个结点。
如果第i个结点不存在,则p->Next==None,无法删除第i个结点。

Status ListDelete(LinkList *L,int i,ElemType *e)
{   
    int j;
    j=1;
    LinkList p,q;
    p=*L;
    while(j<i ||p->Next)
    {
     p=p->Next;
     ++j;
    }
    if(p->Next==None || j>i)
    {
    return ERROR;//第i个元素不存在
    }
    
    q=p->Next;
    *e=q->data;
    p->Next=q->Next;
    free(q);
}

链表的插入操作

顺序线性表L已经存在
操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1
首先要找到第i-1个结点,p指向第i-1个结点,s->Next=p->Next,p->Next=s
循环结束后p指向第i-1个结点,如果p==None,则第i-1个结点为空,此时找不到第i个结点的地址,故无法在第i个结点之前插入元素

Status ListDelete(LinkList *L,int i,ElemType *e)
{   
    int j;
    j=1;
    LinkList p,s;
    p=*L;
    while(j<i || p)
    {
     p=p->Next;
     ++j;
    }
    if(p==None || j>i)
       return error;
    s=(LinkList)malloc(sizeof(Node));
    s->Next=p->Next;
    p->Next=s;
    s->data=e;
    return OK;
}