顺序表的定义和操作,结果有错误,谁帮我看下错在那了?

huangxw000 2007-12-27 08:49:14
#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啊.而且顺序表中多出了好多元素..谁帮忙找下错误啊!!!
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xffismov 2007-12-27
  • 打赏
  • 举报
回复
不懂!飘过~
huangxw000 2007-12-27
  • 打赏
  • 举报
回复
谢谢啊,JF兄弟..
s04120227 2007-12-27
  • 打赏
  • 举报
回复
#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++) //改为for(i=int('A');i <=int('A)+25;i++)
insnode(L,char(i),j+i-'A');
printf("%d\n",L.len);
display(L);
}

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧