鱼C论坛

 找回密码
 立即注册
查看: 3253|回复: 2

单链表的插入问题

[复制链接]
发表于 2019-5-22 15:20:16 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 方大侠 于 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判断不就不能插入了???
怎么改进。。。

方法来源(大话数据结构)
屏幕快照 2019-05-22 下午3.18.43.png

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-22 17:42:44 | 显示全部楼层
3鱼币也太小气了吧。不能大方点,最少也得30咯。

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

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

所以if(L == NULL){
        printf("输入表为空表\n");
        exit(EXIT_FAILURE);
    }这句没我觉得没用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 01:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表