| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4849 人关注过本帖
标题:一个单向链表,不知道头结点,一个指针指向其中的一个结点,问如何删除这个 ...
只看楼主 加入收藏
wlhdhn
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2009-11-18
结帖率:50%
收藏
已结贴  问题点数:0 回复次数:13 
一个单向链表,不知道头结点,一个指针指向其中的一个结点,问如何删除这个指针指向的结点?
如题。
对于不是最后一个结点的程序已运行通过,而当该指针指向单链表的最后一个结点时,请问该怎么删除?
typedef struct Node
{
  int data;
  Node *next;
}*Link;
void deletenode(Link p)
{//删除p所指向的结点
  Link q=p->next;
  if(q)//当p不是指向最后一个结点时
 {
   p->data=q->data;
   p->next=q->next;
   delete q;
 }
  else//当p指向最后一个结点时
 ?????????
}
搜索更多相关主题的帖子: 如何 
2011-08-24 19:19
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:6 
单向链表 你不知道他的前驱 怎么删?我也想知道 - -!
2011-08-25 08:51
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:6 
当它本身 就是最后 一个结点的时候,就什么也不做

迭代的是人,递归的是神。
2011-08-25 08:56
wlhdhn
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2009-11-18
收藏
得分:0 
回复 3楼 lintaoyn
当该结点是最后一个结点时,为什么什么都不做啊?
2011-08-25 09:18
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
别听他扯淡 没有前驱 做不了删除操作的
2011-08-25 09:26
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:0 
谁告诉你删不了?你看了楼主的代码了么?最后一个结点的时候把data,next设成特殊值做一个特殊标志(具体我再想想,我就想反驳二楼)

[ 本帖最后由 lintaoyn 于 2011-8-25 09:34 编辑 ]

迭代的是人,递归的是神。
2011-08-25 09:27
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
那里有什么取巧的方法哦 他的后继 怎么可能知道那个地址是指向他的。

在不做任何标记的情况下,他是没可能知道的,链表是指针、节点状。不是顺序表

2011-08-25 09:35
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
回复 6楼 lintaoyn
笑了  你慢慢反驳吧
2011-08-25 09:36
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:0 
else//当p指向最后一个结点时
  p->next = p;//让最后一个结点的next指向它自己,这个办法可以解决问题。
在判断链表是否到结尾就这么写。p != 0 && p->next != p
然后麻烦楼主告诉hahayezhe,在不知道前趋的情况下删除一个节点。

迭代的是人,递归的是神。
2011-08-25 09:48
wlhdhn
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2009-11-18
收藏
得分:0 
谢谢楼上,你提供的这个方法可行!但是它实质上并没有删除结点,
2011-08-25 09:58
快速回复:一个单向链表,不知道头结点,一个指针指向其中的一个结点,问如何删除 ...
数据加载中...
 
   



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

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