数据结构问题?

编写一个在顺序表L中按元素值进行顺序查找的LocateElem(L,e)算法,该顺序查找第1个值域与e相等的元素的逻辑位序。若这样的元素不存在,则返回值为0。并为每条语句添加一个注释,解释该语句的功能和作用。

题主你好,过程请参考图,图中源代码也给了。当然,首先放的是正经的方法,后面简述一个不正经的。几个函数和模块:

1、定义两个结构体,一个是链表的链表,为了索引所有的链表弄的,当然,头指针这里多定义了一个数量,也就是量表的长度,这个有没有无所谓。一个是普通的量表,一个元素一个指针

2、输入部分,根据链表数量创建链表的链表,然后再根据每一个链表里元素的数量动态创建。因为我这里是c++环境,cin需要和scanf做个替换

3、反向链表:反向操作也就相当于对每一个元素的指针方向反过来,这一步一定要注意不要丢失了引用,注意结束时候将原来的第一个元素的next指向NULL。我这里p表示当前元素,q是当前开始算第二个元素、m是第三个,因为我们转换过程中需要先将第二个和第三个之间的引用断开,所以要给第三个先引用到。

4、打印链表,为了输出

5、主函数及运行结果




不正经的:

因为是一个一个元素进行输入,正常状态下,我们的流程是:创建一个指针->让已有最后一个元素的next指向这个新指针。那我们要反向,就可以在输入时候处理:新建一个指针->让这个新建指针的next指向已有的第一个,让新输入的元素成为头,这样就在输入时候就已经反过来了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-09-29
int LocateElem(L,e)
{
int i = 0;
while(i != L.length)//用i的值和顺序表有效长度,作为条件
{
if(L.elem[i] == e)//数组下标累加,判断是否和e相等
return i+1;//如果相等退出函数,并返回逻辑位,
i++;
}
return 0;//执行到这一句代表 i和 L->lengtg的值相等了,有效长度内没有找到和e相等的值
}本回答被网友采纳
第2个回答  2020-12-02

数据结构:计算机存储、组织数据的方式