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

来源:互联网 发布:linux 重定向 2 1 编辑:程序博客网 时间:2024/06/07 02:59

Problem Description

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

Input

第一行输入元素个数 n (1 <= n <= 15);
第二行输入 n 个整数,保证在 int 范围内。

Output

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

Example Input

1021 30 14 55 32 63 11 30 55 30

Example Output

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

#include <iostream>using namespace std;struct node{    int data;    struct node *next;};int n;struct node *creat(int n){    node *head,*p,*q;    head = new node;    head->next = NULL;    while(n--)    {        p = new node;        p->next = NULL;        cin>>p->data;        p->next = head->next;        head->next =p;    }    return head;}void dele(struct node*head){    node *p,*q,*t;    p = head->next;    while(p)    {        q = p;        t = q->next;        while(t)        {            if(p->data == t->data)            {                n--;                q->next = t->next;                delete(t);                t = q->next;            }            else            {                q = t;                t = t->next;            }        }        p=p->next;    }}void show(struct node *head){    node *p = head->next;    while(p)    {        if(p->next)            cout<<p->data<<' ';        else            cout<<p->data<<'\n';        p=p->next;    }}int main(){    cin>>n;    node *head;    head = creat(n);    cout<<n<<endl;    show(head);    dele(head);    cout<<n<<endl;    show(head);    return 0;}


阅读全文
0 0