顺序表的定义和操作,结果有错误,谁帮我看下错在那了?
#include<stdio.h>
#define MAXLEN 100
typedef char Elemtype;
struct Sqlist
{
Elemtype data[MAXLEN];
int len;
};
void setnull(Sqlist &L);
int length(Sqlist L);
Elemtype get(Sqlist L,int i);
int locate(Sqlist L,Elemtype x);
int insnode(Sqlist &L,Elemtype x,int i);
int delnode(Sqlist &L,int i);
void display(Sqlist L);
void setnull(Sqlist &L)
{
L.len=0;
}
int length(Sqlist L)
{
return(L.len);
}
Elemtype get(Sqlist L,int i)
{
if(i<0 || i>length(L)-1)
printf("你输入的参数有错误!\n");
else
return(L.data[i]);
}
int locate(Sqlist L,Elemtype x)
{
int i=0;
while(i<length(L)&&L.data[i]!=x)
i++;
if(i==L.len)
return (-1);
else
return(i);
}
int insnode(Sqlist &L,Elemtype x,int i)
{
int j;
if(i<0 && i>L.len)
return 0;
else
{
L.len++;
for(j=L.len-1;j>i;j--)
L.data[j]=L.data[j-1];
L.data[i]=x;
return 1;
}
}
int delnode(Sqlist &L,int i)
{
int j;
if(i<0 && i>L.len)
return 0;
else
{
for(j=i;j<L.len-1;j++)
L.data[j]=L.data[j+1];
L.len--;
return 1;
}
}
void display(Sqlist L)
{
int i;
if(length(L)==0)printf("空表!\n");
else
{
for(i=0;i<L.len-1;i++)
printf("%c-> ",L.data[i]);
printf("%c\n",L.data[i]);
}
}
void main()
{
int i,j=0;
Sqlist L;
setnull(L);
for(i=int('a');i<=int('a')+25;i++)
insnode(L,char(i),i-'a');
j=L.len;
printf("%d\n",j);
for(i=int('A');i<=int('Z')+25;i++)
insnode(L,char(i),j+i-'A');
printf("%d\n",L.len);
display(L);
}
输出结果中的俩个测试语句printf结果是 26,77,正确应该是26,52啊.而且顺序表中多出了好多元素..谁帮忙找下错误啊!!!