您的位置:首页 > 理论基础 > 数据结构算法

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

2017-08-07 23:04 435 查看

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

Time Limit: 1000MSMemory Limit: 65536KB[align=center][/align]

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<iostream>#include<string.h>#include<string>#include<cstring>#include<stdlib.h>using namespace std;struct node{int data;node *next;};node *head;void Init()    //初始化{head = new node;head->next = NULL;}void Creat(int e){node *p = new node;p->data = e;p->next = head->next;head->next = p;}void Del(int n){node *q = new node;node *t = new node;q = head->next;while (q){t=q;node *p = new node;p = q->next;while (p){if (q->data == p->data){n--;t->next = p->next;delete p;p = t->next;}else{p = p->next;t = t->next;}}q = q->next;}cout << n << endl;}void Print(){node *q = new node;q = head->next;while (q->next){cout << q->data << " ";q = q->next;}cout << q->data << endl;}int main(){int n,m; cin >> n;Init();for (int i = 0; i < n; i++){cin >> m;Creat(m);}cout << n << endl;Print();Del(n);Print();return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: