| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 381 人关注过本帖
标题:从链表中删除节点(修改问题)
取消只看楼主 加入收藏
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
从链表中删除节点(修改问题)
struct node *delete_from_list(struct node *list, int n)
{
 struct node *cur, *prev;

for (cur = list, prev = NULL;
      cur != NULL && cur->value != n;
      prev = cur, cur = cur->next)
    ;
 if (cur == NULL)
   return list;
 if (prev ==NULL)
   list = list->next;
else
   prev->next = cur->next;
  free(cur);
  return list;
}修改使用一个指针变量而不是两个(即cur和prev)

修改后如下:
struct node *delete_from_list(struct node **list, int n)   //**list为指向需要修改的list指针的指针
{
 struct node *cur;

while ((cur = (*list) != NULL && cur->value < new_node->value)
         *list = cur->list;
   
 if (cur == NULL)
   return *list;
 else
    *list = cur->list;
  free(cur);
  return *list;
}

修改为此,正确吗?
搜索更多相关主题的帖子: return 
2015-11-09 22:36
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
回复 2楼 azzbcc
如果不用2级指针,目测无法使用只1个指针.毕竟需要一个指针来删除节点,而它前面那个指针得指向被删除节点的下一个。

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-11-10 23:14
达尔文
Rank: 2
等 级:论坛游民
帖 子:84
专家分:29
注 册:2015-8-22
收藏
得分:0 
我好好看看

能有一件喜欢的事很不容易,就坚持下去吧.....
2015-11-12 12:11
快速回复:从链表中删除节点(修改问题)
数据加载中...
 
   



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

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