方大侠 发表于 2019-5-22 15:20:16

单链表的插入问题

本帖最后由 方大侠 于 2019-5-22 19:57 编辑

status ListInsert(Linklist *L, int i, ElemType e){
    Linklist *p = L;
    int j=1;
   
    if(L == NULL){
      printf("输入表为空表\n");
      exit(EXIT_FAILURE);
    }
    if(i<1){
      printf("插入位置有误\n");
      exit(EXIT_FAILURE);
    }

    while(p != NULL || j!= i){
      p = p->next;
      j++;
    }
    if(p == NULL || j < i){         
      printf("第i个元素不存在\n");
      exit(EXIT_FAILURE);
········
    }
}
如果一个链表有三个元素,我要插入在第4个(末尾,i=4),
这时,p = NULL,j =4 ,if判断不就不能插入了???
怎么改进。。。

方法来源(大话数据结构)

ba21 发表于 2019-5-22 17:42:44

3鱼币也太小气了吧。不能大方点,最少也得30咯。

像这类问题代码要上完整。

如果你不想上,这里可以先给你指出几点。
插入:
要有 头插
       中间插
      尾插

所以if(L == NULL){
      printf("输入表为空表\n");
      exit(EXIT_FAILURE);
    }这句没我觉得没用。

几番离愁 发表于 2019-5-22 19:20:21

Status ListInsert(LinkList *L,int i,ElemType e)
{
        LinkList s,p;
        int j=1;

        p=L->next;

        while( p && j<i )
        {
                p=p->next;
                j++;
        }       

        if( !p || j>i )
        {
                return ERROR;
        }

        s=(LinkList)malloc(sizeof(Node));
        s->date=e;

        e->next=p->next;
        p->next=e;

        return OK;
}
页: [1]
查看完整版本: 单链表的插入问题