数据结构上机测试1:顺序表的应用
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
在长度为n(n<1000)的顺序表中可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的元素在表中只能有一个)。
Input
第一行输入表的长度n; 第二行依次输入顺序表初始存放的n个元素值。
Output
第一行输出完成多余元素删除以后顺序表的元素个数; 第二行依次输出完成删除后的顺序表元素。
Sample Input
125 2 5 3 3 4 2 5 7 5 4 3
Sample Output
55 2 3 4 7
Hint
用尽可能少的时间和辅助存储空间。
不知当时怎么想的会用链表来实现;;
#include#include struct node{ int data; struct node *next;};int main(){ struct node *head, *p, *tail, *q, *r; head = (struct node *)malloc(sizeof(struct node)); head->next = NULL; tail = head; int i, n; scanf("%d", &n); for(i=0; i data); p->next = NULL; tail->next = p; tail = p; } p = head->next; while(p) { r = p; q = r->next; while(q) { if( q->data != p->data ) { r = r->next; q = r->next; } else { r->next = q->next; free(q); q = r->next; n--; } } p = p->next; } printf("%d\n", n); p = head->next; while(p->next) { printf("%d ", p->data); p = p->next; } printf("%d\n", p->data); return 0;}