首页 > 试题广场 >

删除非空线性链表中由指针p所指链结点的直接后继结点的过程是依

[单选题]

删除非空线性链表中由指针p所指链结点的直接后继结点的过程是依次执行动

作()。(设链结点的构造为

  • r←link(p); link(p)←r; call RET(r)
  • r←link(p); link(p)←link(r); call RET(r)
  • r←link(p); link(p)←link(r); call RET(p)
  • link(p)←link(link(p)); call RET(p)
设线性链表为p->q->r
题目要求将其改为p->r
从答案看link(p)是p->next的意思
即把p->next->next赋给p->next,再释放
(call RET(p)是将p出栈,即将链表结点压入栈中进行操作https://baike.baidu.com/item/call%E6%8C%87%E4%BB%A4/6074728?fr=aladdin)
发表于 2018-07-19 21:35:31 回复(2)
link(p)表示读取p节点link包含的地址也就是p后面一个节点,←表示赋值。选项意思相当于 r=p->next; p->next = r ->next; free(r);
发表于 2018-12-05 17:03:34 回复(0)
就我一个没看懂吗😭
发表于 2020-09-21 10:29:55 回复(3)
根据1楼的解释,
link(p) 表示读取 p 结点中指针 link 内存储的地址,那么 link(p) 读取到的就是 p 结点的直接后继结点。←表示赋值,那么

r←link(p); // 即 r=p->next;
link(p)←link(r); // 即 p->next = r-> next;
call RET(r); // 即 free(r);

call 和 RET 都是汇编操作符,call:子程序调用指令,程序运行到此语句时,调用call后的子程序执行。ret:return,返回指令,返回主程序。
这里语法应该是汇编的语法,可以先忽略。
 

发表于 2021-10-29 15:56:26 回复(0)
只有我觉得选择B吗
发表于 2018-08-04 09:54:42 回复(4)
箭头应该是→这样吧
发表于 2018-08-30 23:13:27 回复(2)
又是因为不认识符号导致的错误
发表于 2020-06-14 14:33:41 回复(0)
B: r <-link(p)就是将p的next赋值给r,
link(p)<-link(r)就是再把r的next赋值给p的next,
最后free掉r所指的结点,也就是题目p之前的后继结点
发表于 2023-08-05 11:53:07 回复(0)
把link看成next
发表于 2022-08-22 13:37:56 回复(0)
r←link(p)的意思是p.link=r 这题看的真别扭
发表于 2022-03-16 20:37:29 回复(0)
D是不是把箭头改过来就对了?
发表于 2022-03-15 11:40:45 回复(1)
D为什么就不对呢
发表于 2020-03-27 08:19:15 回复(2)
这是汇编吗
发表于 2019-05-28 22:17:42 回复(0)
不懂
发表于 2019-03-21 23:49:05 回复(0)

线性链表

节点p,要删除p->next;
r = p->next; p->next = r->next; depose(r)

发表于 2019-03-18 09:31:16 回复(0)
求解答,😰
发表于 2018-10-31 21:01:02 回复(0)
有大佬讲下吗?
发表于 2018-07-13 16:10:32 回复(0)