设计算法实现删除顺序表中多余重复元素。比如说对于顺序表(1,2,3,1,3,4,3,5),删除第四个1及第五个3和第七个3。代码如下,问题是我不知道为什么运行后输入表长8,再输入元素后结果为123343.拜托哪位高人能指点一下?#include <stdio.h>
#include <malloc.h>
#define maxlen 100
typedef struct{
int data[maxlen];
int last;
}Sequenlist;
Sequenlist *Sqlset(){
Sequenlist *L;
int i;
L=(Sequenlist *)malloc(sizeof(Sequenlist));
L->last=-1;
printf("请输入表长:");
scanf("%d",&i);
printf("请输入元素:");
if(i>0){
for(L->last=0; L->last<i; L->last++)
scanf("%d",&L->data[L->last]);
L->last--;
}
return(L);
}
void Printlist(Sequenlist *L)
{
int i;
for(i=0;i<L->last;i++)
printf("%d",L->data[i]);
printf("\n");
}
void SqLdelete(Sequenlist *L,int x)
{
int i;
for(i=x;i<=L->last;i++)
L->data[i]=L->data[i+1];
L->last--;
}
void compare(Sequenlist *L)
{
int i=0,j=0;
for(i=0;j<L->last;i++)
for(j=i+1;j<L->last;j++)
if(L->data[i]==L->data[j]){
SqLdelete(L,j);
j--;
}
}
void main()
{
Sequenlist *L;
L=Sqlset();
compare(L);
Printlist(L);
}
1 回答
- 1 回答
- 1 关注
- 1181 浏览
添加回答
举报
0/150
提交
取消