#在顺序查找一般线性表中遇到的结构体小问题-王道论坛第六章-查找

在顺序查找一般线性表中遇到的结构体小问题-王道论坛第六章-查找

遇到一些小问题

创建结构体

typedef struct Table//表的数据结构
{
int a;//存储空间基址,可以使用a[0]等方式来随机取数
int len;//表的长度
}Table;
没什么说的。
此处基址只是定义了一个指向int类型的指针,别忘了写初始化函数或者在用时分配空间,用
T.a=(int
)malloc((n+1)sizeof(int));//注意强制类型转换(int)
来分配空间。此题暂定类型为int,分配n+1个空间,分配后可使用a[i]=来使用或赋值。

结构体初始化

Init_Table(Table &T,int len)//别忘了使用传址
{
T.a=(int *)malloc((len+1)*sizeof(int));
T.len=len;//别忘了把len写进T中
for(int i=1;i<=T.len;i++)
{
int k;
cin>>k;
T.a[i]=k;
}
}

查找函数

这一步没什么好说的
int Search_Seq(Table T,int key)
{
T.a[0]=key;
int i=0; //注意i要写在外面,不然就成了循环体里的局部变量了
for(i=T.len;T.a[i]!=key;i–) //从后向前查询,没查询到则输出0(其实是查询到了哨兵的位置0,这就是哨兵的作用)
{} //注意此处写一个括号要不然return就成了
//循环里的语句了
return i;
}

主函数

Table T;
Init_Table(T,8);
int result=Search_Seq(T,3);
for(int k=0;k<=8;k++)
{
cout< }
cout<<“在第”< int c;
cin>>c;
return 0;

Tips

在C语言中,有一个称为堆(heap)的自由存储区,由malloc和free()来完成动态存储管理。利用malloc()为每个新产生的串分配一个实际串长所分配的存储空间,分配成功,返回一个指向起始地址的指针,作为基地址,失败返回NULL,已分配空间可以用free()释放。

你可能感兴趣的:(#在顺序查找一般线性表中遇到的结构体小问题-王道论坛第六章-查找)