博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SDUT OJ 数据结构实验之链表七:单链表中重复元素的删除
阅读量:6121 次
发布时间:2019-06-21

本文共 1550 字,大约阅读时间需要 5 分钟。

数据结构实验之链表七:单链表中重复元素的删除

Time Limit: 1000 ms 
Memory Limit: 65536 KiB
   

Problem Description

按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。

Input

第一行输入元素个数 n (1 <= n <= 15);

第二行输入 n 个整数,保证在 int 范围内。

Output

第一行输出初始链表元素个数;

第二行输出按照逆位序所建立的初始链表;
第三行输出删除重复元素后的单链表元素个数;
第四行输出删除重复元素后的单链表。

Sample Input

1021 30 14 55 32 63 11 30 55 30

Sample Output

1030 55 30 11 63 32 55 14 30 21730 55 11 63 32 14 21

删除某一元素关键是找到这一元素的前一个节点;

#include 
#include
struct node{ int data; struct node *next;};int main(){ struct node *head, *p, *q, *r; head = (struct node *)malloc(sizeof(struct node)); head->next = NULL; int n,i; scanf("%d",&n); for(i=0; i
data); p->next = head->next; head->next = p; } printf("%d\n",n); p = head->next; while(p->next) { printf("%d ",p->data); p = p->next; } printf("%d\n",p->data); p = head->next;//要删除的节点是q,它的前一个用r表示; while(p){ r = p; q = r->next; while(q){ if(p->data==q->data){ r->next = q->next; free(q); n--; q = r->next; } else{ r = r->next; q = r->next; } //printf("*\n"); } p = p->next; //printf("#\n"); } printf("%d\n",n); p = head->next; while(p->next){ printf("%d ",p->data); p = p->next; } printf("%d\n",p->data); return 0;}

转载于:https://www.cnblogs.com/gaojinmanlookworld/p/10586982.html

你可能感兴趣的文章
面试总结
查看>>
Chrome浏览器播放HTML5音频没声音的解决方案
查看>>
easyui datagrid 行编辑功能
查看>>
类,对象与实例变量
查看>>
HDU 2818 (矢量并查集)
查看>>
【转】php字符串加密解密
查看>>
22. linux 常用命令
查看>>
ASP.Net 使用GridView模板删除一行的用法
查看>>
(十六)字段表集合
查看>>
JPGraph
查看>>
实验二 Java面向对象程序设计
查看>>
------__________________________9余数定理-__________ 1163______________
查看>>
webapp返回上一页 处理
查看>>
新安装的WAMP中phpmyadmin的密码问题
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第5周学习总结
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
Content Provider的权限
查看>>
416. Partition Equal Subset Sum
查看>>