数据结构实验之链表七:单链表中重复元素的删除
2015-08-04 20:45
393 查看
数据结构实验之链表七:单链表中重复元素的删除
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如果您复制代码时出现行号,请点击左边的“viewplain”后再复制
#include<stdio.h>
#include<string.h>
struct node
{
int data;
node *next;
}*head, *p, *q, *p1;
struct node *creat(int n)
{
head=new node;
head->next=NULL;
for(int i=0;i<n;i++)
{
q=new node;
q->next=NULL;
scanf("%d", &q->data);
q->next=head->next;
head->next=q;
}
return head;
}
int main()
{
int n;
scanf("%d", &n);
head=creat(n);
printf("%d\n", n);
p=head->next;
while(p)
{
printf("%d", p->data);
if(p->next)
printf(" ");
p=p->next;
}
int sum=n;
p=head->next;
while(p)
{
p1=p;
q=p1->next;
while(q)
{
if(p->data==q->data)
{
q=q->next;
p1->next=q;
sum--;
}
else
{
/*q=q->next;
p1=p1->next;*/
p1=q;
q=q->next;
}
}
p=p->next;
}
printf("\n%d\n", sum);
p=head->next;
while(p)
{
printf("%d", p->data);
if(p->next)
printf(" ");
p=p->next;
}
return 0;
}
相关文章推荐
- 数据结构实验之链表六:有序链表的建立
- SDUToj1138数据结构上机测试2-1:单链表操作A
- c++实现链表的抽象数据结构
- SDUToj2122数据结构实验之链表七:单链表中重复元素的删除
- SDUToj1130数据结构上机测试1:顺序表的应用
- SDUToj2121数据结构实验之链表六:有序链表的建立
- 【暑假】[基本数据结构]基本的数据结构知识点总结梳理
- 数据结构笔记之线性存储
- 【暑假】[基本数据结构]根据in_order与post_order构树
- 树状数组---数据结构
- 【暑假】[基本数据结构]根据BFS与DFS确定树
- ios 底层数据结构
- 红黑树
- 数据结构及算法综述
- 数据结构及算法综述
- 【细说PHP学习】第九章 PHP中的数组与数据结构
- 数据结构学习笔记1-链表反转(递归与非递归)
- 读书笔记:数据结构与算法分析(java语言描述)——引论
- 数据结构03_栈、队列和数组
- 位图数据结构的实现与应用