数据结构初学者求教,自己真心不懂

只看过谭的C程序设计,今天刚看严的数据结构,很多不明白。
首先我不知道什么是伪代码,我发一个书中的代码,我把问题打在旁边的【】里:

是说有两个线性表,LA LB分别表示两个集合A和B,先要求一个新的集合A=AUB。

void union(List &La,List Lb){ 【&La是什么意思?List Lb是意思,是一个形参吗?可以不写类型吗?】
// 将所有在线性表Lb中但不在La中的数据元素插入到La中
La len=ListLength(La);Lb len=ListLength(Lb);//求线性表的长度
【线性表长度是什么意思?线性表是不是C语言中数组之类的,ListLength相当于strlen函数吗?】
for(i=1;i<=Lb len;i++){
GetElem(Lb,i,e); //取Lb中第i个数据元素赋给e 【GetElem是一个已经定义的函数吗?为什么看不到定义的?e又是什么。。。汗!】
if (!LocateElem(La,e,equal))ListInsert(La,++La len,e)
// La中不存在和e相同的数据元素,则插入之【ListInsert又是什么?】
}
}// union
——————————————————————————————————
我看得是一头雾水啊,求会的教教指点迷津,,万分感激啊,,分不多,见谅了
我就是看懂了这个,,感觉好像和我写 C语言程序也不太相关把,,,去可能是初学者,,怎么感觉写这个好像比写C程序还要困难点

  伪代码是一种算法描述语言。介于英语和程序语言之间。根据伪代码我们可以很容易的写出程序语言。就你所贴出的伪代码而言:void union(List &La,List Lb)中的&La,代表的意思是传引用。(传引用的好处是函数结束后的值是函数执行后的值,这个函数的作用就是将线性表La,Lb合并并将后并后的线性表传给给La。这样La在函数结束后就代表合并后的链表,如果说不用&La,而是用La,当你在主函数中调用的时候,通过输出La,你会发现La,在union这个函数执行前后的值一样,也就是没变)。线性表的长度就是你的字面理解意思。GetElem函数是已经定义的函数,这个函数是需要自己实现。e是第i个位置的值的保存值(很多时候,我们不用函数返回值来获取值,而是用参数来获取需要的值。)ListInSert也是一个函数,同样需要自己实现(这就是往线性表中插入元素)。
  伪代码一个很重要的特性就是突出重点,不需要给出一些辅助函数的定义(如这段伪代码中的GetElem、LoacteElem、ListInsert函数等都是辅助函数)。当我们根据伪代码去实现算法的时候。就需要自己实现很多东西。伪代码最大的特性就是形象化的表现出算法的思路,而不注重代码的实现。很多数据结构教科书上给出的都是伪代码。因为数据结构本身注重的就是思路。如果你有学算法之类的课程的话,就会发现他们基本都是用伪代码描述一个算法。很少去用某一种语言实现它,就是因为他们更注重的是算法思维,而非实现。
写了这么多,希望对你有所帮助吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-12-25

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

相似回答