关于C语言的线性表。帮忙改一下程序

关于C语言的线性表。帮忙改一下程序
书上都写的伪代码,我试着写简单的但是没有实现,达人帮我看下哪错了
算法很简单,这个程序就是为了按值查找表中与给出数据大小相同的数据的位置。

#include"stdio.h"
#define maxsize 10
typedef struct
{
int elem[maxsize];
int last;
}seqlist;
int locatlist(seqlist *l,int x)
{
int i=0;
while(i<=(l->last) && l->elem[i]!=x)
i++;
if(i>l->last)
return -1;
else return i+1;
}

void main()
{
int x;
int elem[]={25,30,20,60,10,35,15};
seqlist a={elem[6],6};
seqlist *l;
l=&a;
x=locatlist(l,30);
printf("x=%d\n",x);
}
按设计最后应该输出2.不过总是输出-1
我试着把实参30改成其他数但同样得到-1
谁能看出错,分拿去
怎么改啊。。
结构赋值不成功,此野赋值后结构内数据如下:
a = {elem = {15, 6, 0, 0, 0, 0, 0, 0, 0, 0}, last = 0}
执行一次之后就i>档磨(l->last),所森蠢喊以返回-1.
int main()
{
int x;
//int elem[]=;
seqlist a={{25,30,20,60,10,35,15},6};
seqlist *l;
l=&a;
x=locatlist(l,30);
printf("x=%d\n",x);
return 0;
}
#include"stdio.h" 这里是不是该陆颂#include<帆吵stdio.h>这样写早轿郑? 我们学的是这样写的。。
原代码结构体赋值不成功,执行一次之后就i>(l->last),所以返回-1.程序做如下修改后,可以实现功能。VC上运行通过。
#include"stdio.h"
#define maxsize 10
typedef struct
{
int elem[maxsize];
int last;
}seqlist;
int locatlist(seqlist *l,int x)
{
int i=0;
while(i<=(l->last) && l->elem[i]!=x)
i++;
if(i>l->last)
return -1;
else return i+1;
}

void main()
{
int i,x;
seqlist a; //先定义,再赋值竖链。
seqlist *l;
int elem1[]={25,30,20,60,10,35,15}; //这个碰纤或数组名最好不要与前面重名,避免混淆。笑伍
for(i=0;i<7;i++)
{
a.elem[i]=elem1[i];
}
a.last=6;
l=&a;
x=locatlist(l,30);
printf("x=%d\n",x);
}
← 上一篇: 下一篇: →