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

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

2018-03-27 22:58 423 查看

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

Input

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

Output

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

Sample Input

1021 30 14 55 32 63 11 30 55 30

Sample Output

1030 55 30 11 63 32 55 14 30 21730 55 11 63 32 14 21
#include <stdio.h>#include <stdlib.h>struct node{int data;struct node *next;};int main (){int i,n;struct node *head,*p,*q,*t;head = (struct node *)malloc(sizeof (struct node ));head ->next = NULL;scanf("%d",&n);for( i = 1; 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);while (p){if(p->next)printf("%d ",p->data);elseprintf("%d\n",p->data);p =p->next;}p = head->next;while(p){q=p->next;t=p;while (q){if(p->data == q->data){t->next = q->next;n--;q=t->next;}else{q=q->next;t=t->next;}}p=p->next;}printf("%d\n",n);p = head->next;while (p){if(p->next)printf("%d ",p->data);elseprintf("%d\n",p->data);p =p->next;}return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐