数据结构实验之链表七:单链表中重复元素的删除
2016-05-16 22:13
351 查看
数据结构实验之链表七:单链表中重复元素的删除
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
#include<stdio.h> #include<malloc.h> struct node { int number; struct node* next; }; struct node* Create(int num) { struct node* head,*p; head=(struct node*)malloc(sizeof(struct node)); head->next=NULL; for(int i=0;i<num;i++) { p=(struct node*)malloc(sizeof(struct node)); scanf("%d",&p->number); p->next=head->next; head->next=p; } return head; }; int Delete(struct node* head,int num) { struct node *p,*q,*k; int num1=num; p=head; while(p) { q=p; k=q->next; while(k) { if(k->number==p->number) { q->next=k->next; free(k); k=q->next; num1--; } else { q=k; k=q->next; } } p=p->next; } return num1; } void shuchu(struct node*head) { struct node *p; p=head->next; while(p) { if(p==head->next) printf("%d",p->number); else printf(" %d",p->number); p=p->next; } printf("\n"); } int main() { int n,n1; int key; struct node *head; scanf("%d",&n); head=Create(n); printf("%d\n",n); shuchu(head); n1=Delete(head,n); printf("%d\n",n1); shuchu(head); }
相关文章推荐
- 数据结构实验之链表六:有序链表的建立
- 数据结构之线性表的概念
- 数据结构实验之链表五:单链表的拆分
- 数据结构课程笔记_拓扑排序
- 关于数据结构的内存分配问题
- 使用JavaScript的数组实现数据结构中的队列与堆栈
- 共同学习Java源代码--数据结构--ArrayList类(四)
- SDUT3333数据结构实验之栈六:下一较大值(二)
- 数据结构实验之链表四:有序链表的归并
- 数据结构---链表操作(线性结构)
- 数据结构--链表的操作(顺序结构)
- 数据结构--栈的顺序存储
- 数据结构--归并排序
- 数据结构(绪论)
- 数据结构学习---线性表
- 数据结构上机实验五——01背包问题
- 共同学习Java源代码--数据结构--ArrayList类(三)
- Redis中的数据结构-String与List
- C/C++ 数据结构---线性顺序存储数据:查询快,增删慢
- (考研)数据结构及算法