标题:不知这算法有什么错误?
只看楼主
一刀客
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-10-26
 问题点数:0 回复次数:6 
不知这算法有什么错误?

删除 有序递增单链表 上相同的元素!
typedef struct node
{
datatype1 data;
struct node *next;
}linklist;
/*删除相同元素*/
int del(linklist *head)
{
linklist *p,*t;
p=head->data;
while(p->next!=null)
{
t=p->next;
if(t->data==p->data)
{
p->next=t->next->next;
free(t);
}
else
p=p->next;
}

}
编译没出错
但一运行就得提示说程序遇到问题要关闭!晕呀
不知这算法有什么逻辑错误。。
大家有什么意见?

搜索更多相关主题的帖子: 算法 
2007-10-31 22:36
zxc1998
Rank: 1
等 级:新手上路
威 望:1
帖 子:133
专家分:0
注 册:2007-3-21
得分:0 

int del(linklist *head)
{
linklist *p,*t;
p=head->data; //p=head->next;
while(p->next!=null)
{
t=p->next;
if(t->data==p->data)
{
p->next=t->next->next;
free(t);
}
else
p=p->next;
}

}

2007-10-31 23:28
shlg1229
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-9-24
得分:0 
p=head->data你的这条语句就是错的。
p->next=t->next->next改为p->next=t->next,因为你的t=p->next.
你的指针多移了一步

个人意见,不代表官方看法
2007-11-01 10:29
一刀客
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-10-26
得分:0 
回复:(shlg1229)p=head->data你的这条语句就是错...

如你所说 问题就解决了 谢谢大家


责人之心责己 宽己之心宽人
2007-11-01 12:28
一刀客
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-10-26
得分:0 
还有 int del(linklist *head)
这个函数没有return也对?????

责人之心责己 宽己之心宽人
2007-11-01 12:51
shlg1229
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-9-24
得分:0 

当然对;
不是说函数都要用return来返回值的。而且这个函数并没有返回值。


个人意见,不代表官方看法
2007-11-01 16:43
高温煎饺
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-11-2
得分:0 
int del(linklist *head) 这种写入的函数一般可以用bool返回,以便需要时用来检测.

follow your heart
2007-11-03 19:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-182415-1-1.html




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

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