設(shè)計(jì)算法實(shí)現(xiàn)刪除順序表中多余重復(fù)元素。比如說對于順序表(1,2,3,1,3,4,3,5),刪除第四個(gè)1及第五個(gè)3和第七個(gè)3。代碼如下,問題是我不知道為什么運(yùn)行后輸入表長8,再輸入元素后結(jié)果為123343.拜托哪位高人能指點(diǎn)一下?#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 關(guān)注
- 1219 瀏覽
添加回答
舉報(bào)
0/150
提交
取消