找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2685|回复: 0
打印 上一主题 下一主题
收起左侧

C++语言链表删除重复结点

[复制链接]
跳转到指定楼层
楼主
ID:71259 发表于 2014-12-30 01:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 daming 于 2014-12-30 02:14 编辑


  1. #include<iostream.h>
  2. struct link
  3. {
  4. int data;
  5. link *next;
  6. };

  7. link *rcreat()          //尾插法建立单链表
  8. {
  9. link *s,*p,*r; int i;
  10. p=r=new link; p->next=NULL;
  11. cin>>i;
  12. while(i){
  13.   s=new link; s->data=i;
  14.   r->next=s;
  15.   r=s;
  16.   cin>>i;
  17. }
  18. r->next=NULL;
  19. return p;
  20. }

  21. void print(link *head)  //输出
  22. {
  23. link *p;
  24. p=head->next;
  25. while(p->next!=NULL){
  26.   cout<<p->data<<"  ";
  27.   p=p->next;}
  28. cout<<p->data<<endl;
  29. }

  30. void del(link *head ) // 删除重复的结点
  31. {
  32. link *s,*p,*q;

  33. s=head->next;
  34. while(s!=NULL){
  35.       p=s;
  36.      q=p->next;
  37.      while(1){
  38.       if(q==NULL)
  39.        break;
  40.       if(q->data!=s->data)
  41.    {
  42.              p=q; q=q->next;
  43.    }
  44.       else{
  45.              p->next=q->next;
  46.              delete q;
  47.              q=p->next;
  48.    }
  49.   }
  50.   s=s->next;
  51. }
  52. }



  53. void main()
  54. {
  55. link *p;
  56. p=rcreat();
  57. del(p);
  58. print(p);
  59. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表