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

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LISTINCREASMENT 100 //线性表默认的初始分配的最大空间
#define LISTSIZE 10  //每次增加的空间量
#define OVERFLOW -1	//溢出的标志
#define OK 1
typedef int ElemType;
typedef struct              //定义Sqlist别名
{
    ElemType *elem;
    int length;
    int listsize;
    int incrementsize;
}Sqlist;


int SqInitList(Sqlist &L)    //构建一个空表
{
    L.elem=(ElemType*)malloc(LISTSIZE*sizeof(ElemType));
    if(!L.elem) exit (OVERFLOW);    //储存分配失败
    L.length=0;
    L.listsize=LISTSIZE;
    return OK;
}


int ListInsert(Sqlist &L,int i,ElemType e)		//向表里添加数据
{
    if(i<1||i>L.length+1)printf("ERROR!");
    if(L.length>=L.listsize)
    {
        ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREASMENT)*sizeof(ElemType));
        if(!newbase) return OVERFLOW;       //当前存储空间已满

        L.elem=newbase;                 //表内存不足
        L.listsize+=LISTINCREASMENT;	//扩充内存
    }
    ElemType*q=&(L.elem[i-1]);
    ElemType*p;
    for(p=&(L.elem[L.length-1]);p>=q;--p)
        *(p+1)=*p;
        *q=e;
        ++L.length;
        return OK;
}



void purg(Sqlist &L)		//删除重复的数
{
	int i,j,k;
	for(i=0;i<L.length-1;++i)
	{
		j=i+1;
		while(j<L.length)
			if(L.elem[j]!=L.elem[i])++j;
			else
			{
				for(k=j+1;k<L.length;++k)
					L.elem[k-1]=L.elem[k];
				--L.length;
			}
	}
}
/*ElemType GetElem(Sqlist &L,int i)
{
		if(i<1||i>L.length) printf("ERROR!");
		else
		{
			return L.elem[i-1];
		}
}*/

int main()
{
    Sqlist L;
    int t=1,d,n;
    SqInitList(L);
    scanf("%d",&n);
    for(t=1;t<=n;t++)    //建表
    {
        scanf("%d",&d);
        ListInsert(L,t,d);		//加数据
    }
	purg(L);
	printf("%d\n",L.length); //输出表长
  	for(t=1; t<=L.length; t++)	//读表
	{
		if(t==L.length)printf("%d\n",L.elem[t-1]);//最后一个数据换行
		else printf("%d ",L.elem[t-1]);
		
	}	
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值