已知顺序表中的元素按元素值非递减有序排列,编写一个算法,删除顺序表中多余的值相同的元素。
运行截图:
代码:
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR -1
#define OVERFLOW -2
#define MAXSIZE 10;
typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList(SqList &L)
{
L.elem=new ElemType[100];
L.length =10;
return OK;
}
Status DeleteList(SqList &L)
{
int j=0,k,i,m;
i=L.elem[j];
while(j<L.length)
{
for(k=0;k<L.length;k++)
if(i==L.elem[k]&&k!=0)
{
for(m=k;m<L.length;m++)
L.elem[m]=L.elem[m+1];
L.length=L.length-1;
}
j=j+1;
i=L.elem[j];
}
return OK;
}
int main()
{
SqList L;
InitList(L);
int i,j;
printf("请输入10个数(中间用空格):");
for(i=0;i<10;i++)
{
scanf("%d",&L.elem[i]);
printf(" ");
}
printf("\n");
DeleteList(L);
printf("删除成功!");
printf("\n");
for(i=0;i<L.length;i++)
printf("%5d",L.elem[i]);
printf("\n");
}