設計算法實現刪除順序表中多余重復元素。比如說對于順序表(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 關注
- 1232 瀏覽
添加回答
舉報
0/150
提交
取消