数据结构实验之链表七:单链表中重复元素的删除
2016-06-23 18:27
399 查看
数据结构实验之链表七:单链表中重复元素的删除
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。
输入
第一行输入元素个数n; 第二行输入n个整数。
输出
第一行输出初始链表元素个数; 第二行输出按照逆位序所建立的初始链表;
第三行输出删除重复元素后的单链表元素个数;
第四行输出删除重复元素后的单链表。
示例输入
10 21 30 14 55 32 63 11 30 55 30
示例输出
10 30 55 30 11 63 32 55 14 30 21 7 30 55 11 63 32 14 21
提示
来源
不得使用数组!示例程序
view plaincopyprint如果您复制代码时出现行号,请点击左边的“view
plain”后再复制
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct sqq
{
int data;
struct sqq *next;
};
int main()
{
int m,k;
struct sqq *head,*p,*q,*s;
scanf("%d",&k);
head=(struct sqq*)malloc(sizeof(struct sqq));
head->next=NULL;
for(m=0;m<=k-1;m++)
{
p=(struct sqq*)malloc(sizeof(struct sqq));
scanf("%d",&p->data);
p->next=head->next;
head->next=p;
}
printf("%d\n",k);
p=head->next;
while(p)
{
if(p->next==NULL)
printf("%d\n",p->data);
else printf("%d ",p->data);
p=p->next;
}
s=head->next;
while(s)
{
p=s;
q=p->next;
while(q)
{
if(s->data==q->data)
{
k--;
p->next=q->next;
q=q->next;
}
else
{
p=q;
q=q->next; }
}
s=s->next;
}
printf("%d\n",k);
p=head->next;
while(p)
{
if(p->next==NULL)
printf("%d\n",p->data);
else printf("%d ",p->data);
p=p->next;
}
return 0;
}
相关文章推荐
- MySQL索引背后的数据结构及算法原理
- 数据结构之树的基本操作
- 以栈解决迷宫问题
- 栈、队列、背包的数组与链表实现
- java 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
- 文件-第12章-《数据结构题集》习题解析-严蔚敏吴伟民版
- 12-1-顺序文件归并-文件-第12章-《数据结构》课本源码-严蔚敏吴伟民版
- php SPL四种常用的数据结构
- 外部排序-第11章-《数据结构题集》习题解析-严蔚敏吴伟民版
- 数据结构c语言描述(美)习题1-3 n个布尔变量的真值组合
- 数据结构和算法 – 12.高级查找算法(上)
- 数据结构之二叉搜索树
- 算法与数据结构 - 数组
- 11-2-置换-选择排序-外部排序-第11章-《数据结构》课本源码-严蔚敏吴伟民版
- 11-1-败者树-外部排序-第11章-《数据结构》课本源码-严蔚敏吴伟民版
- 数据结构之【线性表】--复习
- 内部排序-第10章-《数据结构题集》习题解析-严蔚敏吴伟民版
- 10-12-顺序表地址排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版
- soot基础 -- soot的数据结构与java语言的结构
- 10-11-基数排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版