一道数据结构的题(C描述)请帮忙。急,谢谢

设计算法删除未排序单链表中的重复元素。... 设计算法删除未排序单链表中的重复元素。 展开
 我来答
根小岩b
2007-10-26 · TA获得超过230个赞
知道小有建树答主
回答量:215
采纳率:100%
帮助的人:259万
展开全部
给一个简单的C程序,代码如下:
#include<malloc.h>
#include<stdio.h>
#include<string.h>
struct dt{
char ch;
struct dt *next;
};

void main(){
int n=0;
char c;
struct dt *head,*p1,*p2,*p,*pre;
p1=p2=(struct dt *)malloc(sizeof(struct dt));
printf("请输入每个结点的信息并以0结束\n");

//初始化单链表
scanf("%c",&c);
while(c!='0'){
n++;
p2->ch=c;
if(n==1) head=p2;
else{
p1->next=p2;
p1=p2;}

p2=(struct dt *)malloc(sizeof(struct dt));
scanf("%c",&c);
}
p1->next=NULL;

//删除相同结点元素的过程
p=head;
while(p!=NULL){
p2=p->next;
c=p->ch;
pre=p;
while(p2!=NULL){
if(p2->ch!=c)
pre=p2;
else
pre->next=p2->next;
p2=p2->next;
}
p=p->next;
}

//输出删除相同结点后的单链表信息
p=head;
while(p!=NULL){
printf("%c ",p->ch);
p=p->next;
}
printf("\n");
}

希望对你有帮助!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
asafish83
2007-10-26 · TA获得超过717个赞
知道小有建树答主
回答量:893
采纳率:0%
帮助的人:357万
展开全部
找个浪费空间的办法
先把链表的东西转存到数组
用qsort排序
排完序后,找出重复的值,并记录
遍历这个链表,保留碰到的第一个重复值,其余的全部删除

这样的效率是O(nlog(n)),比较浪费空间
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
筠轻曼o
2007-10-29 · 超过27用户采纳过TA的回答
知道答主
回答量:130
采纳率:0%
帮助的人:0
展开全部
我试试!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式