数据结构上机测试1:顺序表的应用
2016-05-14 20:11
465 查看
题目描述
在长度为n(n<1000)的顺序表中可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的元素在表中只能有一个)。输入
第一行输入表的长度n;第二行依次输入顺序表初始存放的n个元素值。
输出
第一行输出完成多余元素删除以后顺序表的元素个数;第二行依次输出完成删除后的顺序表元素。
示例输入
12 5 2 5 3 3 4 2 5 7 5 4 3
示例输出
5 5 2 3 4 7
提示
用尽可能少的时间和辅助存储空间。#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
int main()
{
int i,n;
struct node *p,*q,*head,*tail,*r;
scanf("%d",&n);
head=(struct node*)malloc(sizeof(struct node));
head->next=NULL;
tail=head;
for(i=0;i<n;i++)
{
q=(struct node*)malloc(sizeof(struct node));
q->next=NULL;
scanf("%d",&q->data);
tail->next=q;
tail=q;
}
r=head->next;
while(r!=NULL)
{
p=r;
q=p->next;
while(q!=NULL)
{
if(r->data==q->data) //判断元素是否重复
{
n--; //元素个数减1
p->next=q->next; //删除元素
q=q->next;
}
else
{
p=q;
q=q->next;
}
}
r=r->next;
}
printf("%d\n",n);
r=head->next;
while(r!=NULL)
{
printf("%d",r->data);
if(r->next!=NULL)
printf(" ");
r=r->next;
}
printf("\n");
return 0;
}
相关文章推荐
- 数据结构_静态链表_哈夫曼
- 《 常见算法与数据结构》符号表ST(4)——二叉查找树删除 (附动画)
- 个人练习数据结构之--------------关于线性数据的有序数组以及之上的二分法查找、不同排序方法的学习
- Python全栈开发之5、几种常见的排序算法以及collections模块提供的数据结构
- 《 常见算法与数据结构》符号表ST(3)——二叉查找树 (附动画)
- 数据结构之用栈实现逆波兰表达式
- 数据结构实验之链表九:双向链表
- java核心数据结构(一)——List类族
- 《 常见算法与数据结构》符号表ST(2)——初等实现分析和有序符号表
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构之链表
- 《 常见算法与数据结构》符号表ST(1)——基本介绍
- Redis 数据结构使用场景
- Java千百问_06数据结构(016)_引用类型数组在内存中如何储存
- 数据结构(c)——排序算法
- 开始批改数据结构作业啦
- Java千百问_06数据结构(015)_数组和普通对象的引用变量有什么区别
- Java千百问_06数据结构(014)_java数组如何存储在内存中
- 3364 数据结构实验之图论八:欧拉回路
- 链表的应用