| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3306 人关注过本帖
标题:数据结构单链表的插入
取消只看楼主 加入收藏
星野
Rank: 2
来 自:河北
等 级:论坛游民
帖 子:73
专家分:26
注 册:2016-4-13
结帖率:82.35%
收藏
已结贴  问题点数:20 回复次数:3 
数据结构单链表的插入
程序代码:
void InsertList(LinkList L,int e)
{
    if(L==NULL)
    {
        printf("线性表为空");
        return ERROR;
    }
    int i=0;
    Node *s,*p,*ptr;
    s=(Node *)malloc(sizeof(Node));
    p=L;
    s->data=data;
    while((p->data<data)&&(p->next!=NULL))
    {
        ptr=p;
        p=p->next;
        i++;
    }
    if(p->data>=data)
    {
        if(p=L)
        {
            s->next=p;
            L->next=s;
        }
        else
        {
            s->next=p;
            ptr->next=s;
        }
    }
    else
    {
        p->next=s;
        s->next=NULL;
    }
    printf("插入成功");
}


这个是老师给的代码  我着实看不懂是什么意思!
1.while((p->data<data)&&(p->next!=NULL))中p->data<data是什么意思啊?
2.ptr=p;为什么要引入ptr啊?
4.if(p->data>=data)这个又是什么?
然后为什么又要分出来p=L的情况??

好蒙圈 啊  !!
2016-09-28 18:26
星野
Rank: 2
来 自:河北
等 级:论坛游民
帖 子:73
专家分:26
注 册:2016-4-13
收藏
得分:0 
回复 2楼 书生牛犊
为什么还要引入一个 ptr呢???这是什么意思啊??
2016-09-29 18:23
星野
Rank: 2
来 自:河北
等 级:论坛游民
帖 子:73
专家分:26
注 册:2016-4-13
收藏
得分:0 
回复 5楼 书生牛犊
   好的   我会继续努力的。谢谢版主!
2016-09-29 19:47
星野
Rank: 2
来 自:河北
等 级:论坛游民
帖 子:73
专家分:26
注 册:2016-4-13
收藏
得分:0 
以下是引用书生牛犊在2016-9-29 19:00:02的发言:

如果你测试的时候插入的数据都比我所初始化的L.data=-1 要大,程序是没问题的,
但是如果输入了“-2 ”这类比-1小的数字就不行了。程序不停地输出*,表示他在不停地执行while((p->data<data)&&(p->next!=NULL))

---------------
“为什么不能输入比-1小的数呢?,明明输入-2的时候程序还是输出“插入成功”但是下一次试图插入5,程序却一动不动

这算思考题,想通了。我觉得你对指针的理解程度就上了一个新台阶了。
至于怎么想,很简单,用脑子模拟程序,看看程序到底在插入一个比头结点小的数字的时候发生了什么。


版主这个if(p==L)的那一部分可以这样画图吗?这样画图对不对?
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-10-06 17:22
快速回复:数据结构单链表的插入
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026839 second(s), 10 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved