1139-数据结构上机测试2-2:单链表操作B
2017-08-30 09:06
393 查看
数据结构上机测试2-2:单链表操作B
Problem Description
按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。Input
第一行输入元素个数n;第二行输入n个整数。
Output
第一行输出初始链表元素个数;第二行输出按照逆位序所建立的初始链表;
第三行输出删除重复元素后的单链表元素个数;
第四行输出删除重复元素后的单链表。
Example Input
1021 30 14 55 32 63 11 30 55 30
Example Output
1030 55 30 11 63 32 55 14 30 21
7
30 55 11 63 32 14 21
代码块
//数据结构上机测试2-2:单链表操作B #include<stdio.h> #include<iostream> #include<string.h> #include<stdlib.h> typedef struct node { int data; struct node *next; }node; int n; node *creat(int n)//在建表输入数据的时候就已经把数据逆置 { node *l,*s,*p,*w; int i; l=(node *)malloc(sizeof(node)); l->next=NULL; for(i=1;i<=n;i++) { s=(node *)malloc(sizeof(node)); scanf("%d",&s->data); s->next=l->next; l->next=s; } return l; } void shuchu(node *l) { node *r; r=l->next; while(r&&r->next!=NULL) { printf("%d ",r->data); r=r->next; } printf("%d",r->data); } void delt(node *l) { node *p,*q,*pre; p=l->next; while(p->next) { q=p->next; pre=p; while(q) { if(q->data == p->data) { n--; pre->next=q->next; free(q); q=pre->next; } else { pre=q; q=q->next; } } p=p->next; } printf("%d\n",n); } int main() { int i,j; node *l; scanf("%d",&n); l=creat(n); printf("%d\n",n); shuchu(l);//输出逆置后的数据 printf("\n"); delt(l);//删除重复数据,题目中要求如若有重复数据保留最后一次输入的数据,此时表中的数据已经逆置,所以保留前面的数据,删除后面重复的数据。 shuchu(l);//输出删除重复元素后的数据 printf("\n"); }
注
本题目应当注意,逆序建表和顺序建表,不要混用,删除重复元素的代码也应当熟练掌握,相关文章推荐
- 【1139】数据结构上机测试2-2:单链表操作B
- 【1139】数据结构上机测试2-2:单链表操作B (逆序建表+重复元素删除)
- 【1139】数据结构上机测试2-2:单链表操作B (逆序建表+重复元素删除)
- 1138 数据结构上机测试2-1:单链表操作A
- 数据结构上机测试2-1:单链表操作A
- 数据结构上机测试2-1:单链表操作A
- 数据结构上机测试2-1:单链表操作A
- 数据结构上机测试2-1:单链表操作A
- 数据结构上机测试2-1:单链表操作A
- 暑假集训第1天链表-数据结构上机测试2-1:单链表操作A
- 数据结构上机测试2-2:单链表操作B
- 寒假第二天--线性表--数据结构上机测试2-1:单链表操作A
- 【1138】数据结构上机测试2-1:单链表操作A(顺序建表+删除节点)(SDUT)
- 【1138】数据结构上机测试2-1:单链表操作A(顺序建表+删除节点)(SDUT)
- 数据结构上机测试2-1:单链表操作A
- 【1138】数据结构上机测试2-1:单链表操作A
- 数据结构上机测试2-2:单链表操作B
- 1138- 数据结构上机测试2-1:单链表操作A
- 寒假第二天--线性表--数据结构上机测试2-2:单链表操作B
- 数据结构上机测试2-2:单链表操作B