问一道数据结构题(严蔚敏 c语言版) 函数GetElem在单链表中的实现例子如下Status GetElem_L(LinkList L,int i,ElemType &e) {// L是带头结点的链表的头指针,以 e 返回第 i 个元素p = L->next; j = 1; // p指向第

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 04:43:21
问一道数据结构题(严蔚敏 c语言版) 函数GetElem在单链表中的实现例子如下Status GetElem_L(LinkList L,int i,ElemType &e) {// L是带头结点的链表的头指针,以 e 返回第 i 个元素p = L->next; j = 1; // p指向第

问一道数据结构题(严蔚敏 c语言版) 函数GetElem在单链表中的实现例子如下Status GetElem_L(LinkList L,int i,ElemType &e) {// L是带头结点的链表的头指针,以 e 返回第 i 个元素p = L->next; j = 1; // p指向第
问一道数据结构题(严蔚敏 c语言版) 函数GetElem在单链表中的实现
例子如下
Status GetElem_L(LinkList L,int i,ElemType &e) {
// L是带头结点的链表的头指针,以 e 返回第 i 个元素
p = L->next; j = 1; // p指向第一个结点,j为计数器
while (p && jnext; ++j;}
// 顺指针向后查找,直到 p 指向第 i 个元素
// 或 p 为空
if ( p || j>i )
return ERROR; // 第 i 个元素不存在
e = p->data; // 取得第 i 个元素
return OK;
请对这道题做详细分析,尤其是while和if两部分,最不明白if语句中的(!p || j>i)这一部分,尤其是j>i这个条件,总之要讲详细点

问一道数据结构题(严蔚敏 c语言版) 函数GetElem在单链表中的实现例子如下Status GetElem_L(LinkList L,int i,ElemType &e) {// L是带头结点的链表的头指针,以 e 返回第 i 个元素p = L->next; j = 1; // p指向第
文字有点长,但都是我一个一个打出来的,希望你能认真看完!
调用的GetElem函数的参数有链表L、要查找元素的位置i和存储查找结果的变量e
函数开始先把链表头节点的next节点指针拷贝给节点指针p,将p作为循环变量
while (p && j<i) 的意思是如果p的值不为空,即链表L头节点的下一个指向不为空(NULL)的话,就循环
然后指针p不断地把自身的next域拷贝给自己,从而能够遍历整个链表,而且j也不断自增直至到达i的位置
由于while的循环条件有两个,所以在退出循环后,要检查一下是因为哪个条件不满足才退出的
所以用if ( !p || j>i )判断,如果刚开始p的值为空(即!p),或所给的位置i<j=1(说明i是错误位置),都会
执行if里的语句,直接返回错误(return ERROR),程序到此就会结束
如果没有结束,则说明不是因为上述两种原因(即正常循环结束),这时p的数据域(p->data)就是要查找的数据,正常结束函数调用
【原创答人】

问一道数据结构题(严蔚敏 c语言版) 函数GetElem在单链表中的实现例子如下Status GetElem_L(LinkList L,int i,ElemType &e) {// L是带头结点的链表的头指针,以 e 返回第 i 个元素p = L->next; j = 1; // p指向第 数据结构(C语言版) 严蔚敏版的,里面的交换赋值什么意思?给个例子 求一个学过数据结构(C语言版)的大神,有一个关于克鲁斯卡尔算法和普里姆算法的问题!需要大神指点,如题 C语言版数据结构里的 locateElem (L,e,compare())是什么意思?compare()是判定函数,请举个例子给我,C语言版数据结构里的 locateElem (L,e,compare())是什么意思?compare()是判定函数,什么样的?我就是不理 数据结构与算法 C语言版的问题 ,在一棵具有5层的哈夫曼树中结点数为 ( )A 5 B9 C 10 D11 算法与数据结构问题(C语言版):证明通过先根序列和中序序列可以构造出2叉树 数据结构(C语言版)中,树和二叉树中的Huffman树编码的大体框架是什么书上的看的不怎么懂,概念有混淆, 求一个括号算法匹配算法的代码,C语言版的数据结构 使用普里姆算法求最小生成树.我们数据结构(c语言版)的作业. 马踏棋盘的算法是数据结构的C语言版,用栈和队列来实现. 请问下,在数据结构(C#语言版)中,get和set有什么作用 一道数据结构题 数据结构算法2.1两个线性表LA和LB,求新的集合那个,C语言版完整程序怎么写啊 采用队列,编写程序打印出杨辉三角形 数据结构(C语言版) 采用队列,编写程序打印出杨辉三角形.11 11 2 11 3 3 11 4 6 4 11 5 10 5 1 设计一个一元多项式简单的计算器(数据结构C语言版)急要求:一元多项式计算器的基本功能定为 (1) 建立多项式 (2) 输出多项式 (3) 两个多项式相加,建立并输出和多项式 (4) 两个多项式相减 用非递归算法实现:统计二叉树中度为1的结点个数、度为2的结点个数和度为0的结点个数.是非递归算法,数据结构的(C语言版) 各位高手谁给我写一个数据结构(C语言版)源代码的主函数,子函数我自己加,或者写一个子函数举个例子!要求就是完成各种排序,给出每个排序的结果 急求归并排序算法:将有序数组A[0,… ,n]和B[0 ,… ,m]合并(C语言)数据结构C语言版