| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 455 人关注过本帖
标题:插入链表的问题。
只看楼主 加入收藏
kim2014
Rank: 2
等 级:论坛游民
帖 子:21
专家分:11
注 册:2011-5-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
插入链表的问题。
16 //头节点
 17 PLIST pgst_head = NULL;
 18 //链表长度
 19 int n_size = 0;
 20     
 21 //插入节点
 22 int insert_node(STUDENT para_stu)
 23 {   
 24     PLIST pst_temp = NULL;
 25     PLIST tmp = NULL;
 26
 27     //申请空间
 28     pst_temp = (PLIST)malloc(sizeof(LIST));
 29     tmp = (PLIST)malloc(sizeof(LIST));
 30
 31     //判断是否申请成功
 32     if (pst_temp == NULL)
 33     {
 34         return 8;
 35     }
 36
 37     //赋值
 38     strcpy(pst_temp->stu.name, para_stu.name);
 39     strcpy(pst_temp->stu.no, para_stu.no);
 40     pst_temp->stu.elec = para_stu.elec;
 41     pst_temp->stu.expe = para_stu.expe;
 42     pst_temp->stu.requ = para_stu.requ;
 43     pst_temp->stu.sum = para_stu.elec + para_stu.expe + para_stu.requ;
 44
 45     pst_temp->pst_next = NULL;
 46
 47     //插入链表
 48     //空链表的情况
 49     if (pgst_head == NULL)
 50     {
 51         pgst_head = pst_temp;
 52         tmp = pgst_head;
 53         n_size++;
 54     }
 55     //链表不为空的情况
 56     else
 57     {
 58         pst_temp->pst_next = tmp->pst_next;
 59         tmp->pst_next = pst_temp;
 60         n_size++;
 61     }
 62
 63     return 0;
 64 }
只能插入一个头结点,然后就插不进去了。
搜索更多相关主题的帖子: 空间 问题 return 
2012-04-22 10:46
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:5 
你只进行了一次空间申请,如果你要依次输入到链表当中去,你得加一个循环...让它每次在输入前分配空间
2012-04-22 12:13
kim2014
Rank: 2
等 级:论坛游民
帖 子:21
专家分:11
注 册:2011-5-20
收藏
得分:0 
回复 2楼 爱闹的娃
好像不是那个问题呢...
2012-04-22 13:22
王点口
Rank: 2
等 级:论坛游民
帖 子:26
专家分:50
注 册:2011-9-15
收藏
得分:5 
else
57     {
58         pst_temp->pst_next = tmp->pst_next;
59         tmp->pst_next = pst_temp;
60         n_size++;
61     }

这段代码是什么意思咯,都没找链表头,怎么在后面插入。 tmp->pst_next 里面压根就没东西了


2012-04-22 14:55
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:0 
回复 4楼 王点口
他这里没有错啊,他不是在表尾进行插入,而是将每次的插入点选择在第一个节点(不是head)...........
2012-04-22 20:33
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:0 
回复 3楼 kim2014
那你认为是什么问题?????自己是不是仔细去调试程序???
2012-04-22 20:36
longwu87
Rank: 2
等 级:论坛游民
帖 子:14
专家分:69
注 册:2011-7-28
收藏
得分:5 
你这个程序当然每次不管插入多少次都只有第一个数据  

int insert_node(STUDENT para_stu)
23 {   
24     PLIST pst_temp = NULL;
25     PLIST tmp = NULL;
26
27     //申请空间
28     pst_temp = (PLIST)malloc(sizeof(LIST)); //这个pst_temp 每次接受了  para_stu的值  没错,并且将这个值给了tmp->pst_next,也没错;但是除了第一次将tmp连接上了head之后。之后的
29     tmp = (PLIST)malloc(sizeof(LIST)); //tmp是一个新元素 与上一次调用这个函数的tmp并不是同一个。所以永远也没有插入进来

解决方法:将 PLIST tmp = NULL;设置成全局的吧
2012-04-22 22:05
kim2014
Rank: 2
等 级:论坛游民
帖 子:21
专家分:11
注 册:2011-5-20
收藏
得分:0 
回复 7楼 longwu87
我想实现尾插。但是将tmp声明成全局的、也不行啊。我这代码得怎么实现尾插啊?
2012-04-23 22:35
快速回复:插入链表的问题。
数据加载中...
 
   



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

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