利用单链表删除重复元素
2016-03-19 19:48
519 查看
****前面一篇介绍了用顺序表删除重复元素,那用单链表是不是也能奏效呢?下面用单链表删除重复元素。****
#include <iostream> using namespace std; typedef int ElemType; struct Node { ElemType data; struct Node *next; }; Node* Create() { Node *head,*p,*q; head=new Node; head->next=NULL; q=head; int n,i; double k; cout<<"请输入您要创建的链表长度:"; cin>>n; cout<<endl; cout<<"请输入链表中每个结点保存的数据:"; for(i=0;i<n;i++) { cin>>k; p=new Node; p->data=k; q->next=p; q=p; } p->next=NULL; cout<<endl<<"链表创建成功"<<endl; return head; } Node* DeleteSame(Node *L) { cout<<"现在进行删除链表中的重复元素..."<<endl; Node *p,*q,*r; p=L->next; while(p) //p用于遍历链表 { q=p; while(q->next) //q遍历p后面的结点,并与p数值比较 { if(q->next->data==p->data) //当q的后一结点与p相等时 { r=q->next; //r保存需要删掉的结点 q->next=r->next; //需要删除的结点前后结点相连接 delete r; //删除保存的结点 } else q=q->next; } p=p->next; //q再往后遍历,观察是否还有重复元素 } return L; } void ShowLink(Node *L) { cout<<"显示链表中所有结点的数据:"; Node *p; p=L->next; while(p) { cout<<p->data<<" "; p=p->next; } cout<<endl; } int main() { Node *L; L=Create(); ShowLink(L); DeleteSame(L); cout<<"删除成功。"<<endl; ShowLink(L); return 0; }
相关文章推荐
- Java虚拟机
- 个人项目总结与结对编程的开始
- 四则运算的功能添加版02
- FFmpeg frei0r water 滤镜
- 搜索历史 AutoCompleteTextView自定义匹配关键字匹配
- Hello World
- JavaWeb开发之十:JSP运行原理与基础
- 四则运算 个人项目整理
- Android快速开发系列 10个常用工具类
- 《数学之美》读书记录
- Spark运行模式及原理(一)
- 实现自动生成30道四则运算题目(4)
- 四则运算二项目计划总结
- modbus学习
- 第三周作业(一)单元测试
- 第四周上机实践项目——项目2-太乐了
- Android SwipeRefreshLayout 谷歌官方下拉刷新空间 最好的没之一
- 用Python写出LSTM-RNN的代码!
- Xshell的安装与使用,向云服务器上传文件
- pycaffe对于图片的加载与训练