设计算法实现删除顺序表中多余重复元素。比如说对于顺序表(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); }
相关分类