问一道数据结构题(严蔚敏 c语言版) 函数GetElem在单链表中的实现例子如下Status GetElem_L(LinkList L,int i,ElemType &e) {// L是带头结点的链表的头指针,以 e 返回第 i 个元素p = L->next; j = 1; // p指向第
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/17 02:58:38
![问一道数据结构题(严蔚敏 c语言版) 函数GetElem在单链表中的实现例子如下Status GetElem_L(LinkList L,int i,ElemType &e) {// L是带头结点的链表的头指针,以 e 返回第 i 个元素p = L->next; j = 1; // p指向第](/uploads/image/z/5091154-34-4.jpg?t=%E9%97%AE%E4%B8%80%E9%81%93%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E9%A2%98%EF%BC%88%E4%B8%A5%E8%94%9A%E6%95%8F+c%E8%AF%AD%E8%A8%80%E7%89%88%EF%BC%89+%E5%87%BD%E6%95%B0GetElem%E5%9C%A8%E5%8D%95%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E5%AE%9E%E7%8E%B0%E4%BE%8B%E5%AD%90%E5%A6%82%E4%B8%8BStatus+GetElem_L%28LinkList+L%2Cint+i%2CElemType+%26e%29+%7B%2F%2F+L%E6%98%AF%E5%B8%A6%E5%A4%B4%E7%BB%93%E7%82%B9%E7%9A%84%E9%93%BE%E8%A1%A8%E7%9A%84%E5%A4%B4%E6%8C%87%E9%92%88%2C%E4%BB%A5+e+%E8%BF%94%E5%9B%9E%E7%AC%AC+i+%E4%B8%AA%E5%85%83%E7%B4%A0p+%3D+L-%3Enext%3B+j+%3D+1%3B+%2F%2F+p%E6%8C%87%E5%90%91%E7%AC%AC)
问一道数据结构题(严蔚敏 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)就是要查找的数据,正常结束函数调用
【原创答人】