数据结构问题

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

}


sunny超1
浏览 1182回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP