数据结构实验之链表七:单链表中重复元素的删除
2017-09-19 22:14
387 查看
数据结构实验之链表七:单链表中重复元素的删除
Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic
Problem Description
按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。
Input
第一行输入元素个数 n (1 <= n <= 15);第二行输入 n 个整数,保证在 int 范围内。
Output
第一行输出初始链表元素个数;第二行输出按照逆位序所建立的初始链表;
第三行输出删除重复元素后的单链表元素个数;
第四行输出删除重复元素后的单链表。
Example Input
10 21 30 14 55 32 63 11 30 55 30
Example 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> typedef struct node{ int data; struct node *next; }*linkList; int count = 0; void creatList(linkList &L,int n){ struct node *p; L =new node; L->next = NULL; for(int i = 0; i < n; i++){ p = (struct node*)malloc(sizeof(struct node)); scanf("%d", &p->data); p->next = L->next; L->next = p; } }; void outputData(linkList &L){ struct node *p; p = L->next; while(p){ if(p->next == NULL) printf("%d\n", p->data); else printf("%d ", p->data); p = p->next; } } void delete_data(linkList &L){ struct node *p, *q, *k; p = L; while(p){ k = p; q = k->next; while(q){ if(q->data == p->data){ k->next = q->next; free(q); count--; q = k->next; } else{ k = q; q = k->next; } } p = p->next; } } int main(){ int n; scanf("%d", &n); count = n; linkList L; creatList(L, n); printf("%d\n", n); outputData(L); delete_data(L); printf("%d\n", count); outputData(L); return 0; }
相关文章推荐
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除 (SDUT 2122)
- 数据结构实验之链表七:单链表中重复元素的删除