SDUT OJ 数据结构实验之链表七:单链表中重复元素的删除
2024-10-20 01:28:56
数据结构实验之链表七:单链表中重复元素的删除
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。
Input
第一行输入元素个数 n (1 <= n <= 15);
第二行输入 n 个整数,保证在 int 范围内。
Output
第一行输出初始链表元素个数;
第二行输出按照逆位序所建立的初始链表;
第三行输出删除重复元素后的单链表元素个数;
第四行输出删除重复元素后的单链表。
Sample Input
10
21 30 14 55 32 63 11 30 55 30
Sample Output
10
30 55 30 11 63 32 55 14 30 21
7
30 55 11 63 32 14 21
删除某一元素关键是找到这一元素的前一个节点;
#include <stdio.h>
#include <stdlib.h>
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<n; i++){
p = (struct node *)malloc(sizeof(struct node));
scanf("%d",&p->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;
}
最新文章
- 解决bootstrap模态框内输入框无法获取焦点
- linux 64位调用
- Docker Compose to CoreOS
- 记一次动画的优化--requestAnimationFrame、webp
- Android Studio Check for Update
- c语言构建动态数组
- 安卓MonkeyRunner源码分析之启动
- jQuery Easy UI LinkButton(button)包
- java系列--I/O流
- Nginx+Django-Python+BPMN-JS的整合工作流实战项目
- charles抓包https设置
- Django11-ModelForm
- BZOJ3160 万径人踪灭(FFT+manacher)
- 利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境
- 796. Rotate String
- Json.NET如何避免循环引用
- nc用法【转】
- react-router的browserHistory/react-router-dom的BrowserRouter刷新页面404问题解决
- FormWindowState.Maximized的陷阱
- Beta分布(转)
热门文章
- Mybatis工具Generator
- EasyGui
- C# XML文件操作
- [ShaderStaff] Sprite Outline外轮廓效果
- 如何解决quartz在集群下出现的资源抢夺现象
- 性能监控工具YourKit
- MongoDB简介及基础知识
- Tarjan的强连通分量算法
- 解决nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
- The &#39;Microsoft Jet OLEDB 4.0 Provider&#39; is not registered on the local machine