数据结构实验之链表七:单链表中重复元素的删除
2016-02-13 10:11
453 查看
数据结构实验之链表七:单链表中重复元素的删除
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
提示
来源
不得使用数组!
示例程序
</pre><pre code_snippet_id="1577562" snippet_file_name="blog_20160213_2_6938598" name="code" class="cpp">#include<bits/stdc++.h> using namespace std; typedef struct node { int data; struct node *next; }LNode,*LinkList; void DisplayList(LinkList head) { LNode *p; p=head->next; while(p!=NULL) { p->next==NULL?cout<<p->data<<endl:cout<<p->data<<" "; p=p->next; } } LinkList CreatList(int n) { LNode *head,*p; int m; head=new LNode; head->next=NULL; m=n; while(m--) { p=new LNode; cin>>p->data; p->next=head->next; head->next=p; } cout<<n<<endl; DisplayList(head); return head; } void DeleteLNode(LinkList head,int n) { LNode *p,*q,*t; int i=0,flag=1; p=head->next; t=p; while(p) { t=p; q=p->next; while(q) { if(q->data!=p->data) { q=q->next; t=t->next; } else { t->next=q->next; delete q; i++; q=t->next; flag=0; } } p=p->next; } cout<<n-i<<endl; DisplayList(head); } int main() { LinkList head; int n; cin>>n; head=CreatList(n); DeleteLNode(head,n); return 0; }
相关文章推荐
- 数据结构实验之链表六:有序链表的建立
- 学习笔记------数据结构(C语言版)串的定长顺序存储表示
- 数据结构
- C++自制Redis 数据库(十)数据结构类
- 数据结构实验之链表五:单链表的拆分
- 【数据结构实验】校园游览导图系统
- socket编程 -- 网络字节序、IP地址转换、sockaddr数据结构
- 【LA7402】colorful tree 数据结构
- [数据结构与算法分析] 二叉查找树的基础概念,插入以及删除
- 9.数据结构之二叉树
- 数据结构之三讲--表、栈、队列
- 程序猿必修----数据结构(1基础概念跟介绍)
- 数据结构图文解析之:哈夫曼树与哈夫曼编码详解及C++模板实现
- 数据结构:字典
- 访问者模式——数据操作与数据结构分离
- <复习>数据结构中的结构体
- 数据结构实验之链表四:有序链表的归并
- 数据结构实验之链表三:链表的逆置
- 数据结构实验之链表二:逆序建立链表
- 数据结构实验之链表一:顺序建立链表