数据结构上机测试1:顺序表的应用


数据结构上机测试1:顺序表的应用

 

Time Limit: 1000MS Memory limit: 65536K

题目描述

在长度为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>

typedef struct node
{
    int data;
    structcnode *next;
}*A,M;

int main()
{
    int n,k;
    int i;
    A head,p,q,tail;
    head=(A)malloc(sizeof(M));
    head->next=NULL;
    tail=head;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        p=(A)malloc(sizeof(M));
        scanf("%d",&p->data);
        p->next=NULL;
        tail->next=p;
        tail=p;
    }
     A t;
     p=head->next;
    while(p->next!=NULL)
    {
        q=p;
        t=q->next;
        while(t->next!=NULL)
        {
            if(t->data==p->data)
            {
                q->next=t->next;
                free(t);
                t=q->next;
                n--;
            }
            else
            {
                q=t;
                t=t->next;
            }
        }
        if(t->next==NULL)
        {
            if(t->data==p->data)
            {
                q->next=NULL;
                free(t);
                n--;
            }
        }
        p=p->next;
    }
    printf("%d\n",n);
    p=head->next;
    while(p)
    {
        if(p->next==NULL)
            printf("%d\n",p->data);
        else
            printf("%d ",p->data);
        p=p->next;
    }
    return 0;
}

 

posted @ 2014-11-17 23:23  夏迩  阅读(196)  评论(0)    收藏  举报