已知P结点是某双向链表的中间结点,从下列提供的答案中选择合适的语句序列
发布网友
发布时间:2022-05-01 17:53
我来回答
共1个回答
热心网友
时间:2023-10-23 12:18
答案不是唯一的,部分句子可以互换.
a.在P结点后插入S结点的语句序列是
12:P->next->priou=S; //p的下一结点的前一结点修改为S
7:S->next=P->next; //S的下一结点修改为p的下一结点,如此,12和7将p的下一结点与s连结了.
3:P->next=S; // p的下一结点修改为S
6:S->priou=P; //S的上一结点修改为p,如此,p和S连接起来了
//注:前提是p不是最后一个结点,或者链表本身是循环链表
b.在P结点前插入S结点的语句序列是
13:P->priou->next=S; //p的前一结点的后一结点修改为S
8:S->priou=P->priou; //s的前一结点修改为p的前一结点,如此2句,将p的前一结点和S连接了
5:S->next=P; // S的下一结点修改为p
4:P->priou=S; // p的上一结点修改为s,如此也将p和S连接
// 注:p不是表头,或者链表本身是循环链表
c.删除p结点的直接后继结点的语句序列是
15:Q=p->next; //Q指向p的下一结点(即直接后继结点)
1:P->next=P->next->next; //p的下一结点修改为Q的下一结点
11:P->next->priou=P; //p的下一结点(此时为Q的下一结点)的前一结点修改为p,如此将Q断开了
18:free(Q); // 释放Q即可
d.删除p结点的直接前驱结点的语句序列是
16:Q=P->priou; //Q指向p的直接前驱结点
2:P->priou=P->priou->priou; //p的直接前驱修改为Q的直接前驱
10:P->priou->next=P; //p的直接前驱的下一结点修改为p,如此时Q断开并提出
18:free(Q); // 释放Q
e.删除p结点的语句序列是
9:P->priou->next=P->next; //p的直接前驱的下一结点修改为p的直接后继
14:P->next->priou=P->priou; //p的直接后续的上一结点修改为p的直接前驱,如此将p提出
17:free(P); //释放p
以上均假设所用到的结点是有效的.
热心网友
时间:2023-10-23 12:18
答案不是唯一的,部分句子可以互换.
a.在P结点后插入S结点的语句序列是
12:P->next->priou=S; //p的下一结点的前一结点修改为S
7:S->next=P->next; //S的下一结点修改为p的下一结点,如此,12和7将p的下一结点与s连结了.
3:P->next=S; // p的下一结点修改为S
6:S->priou=P; //S的上一结点修改为p,如此,p和S连接起来了
//注:前提是p不是最后一个结点,或者链表本身是循环链表
b.在P结点前插入S结点的语句序列是
13:P->priou->next=S; //p的前一结点的后一结点修改为S
8:S->priou=P->priou; //s的前一结点修改为p的前一结点,如此2句,将p的前一结点和S连接了
5:S->next=P; // S的下一结点修改为p
4:P->priou=S; // p的上一结点修改为s,如此也将p和S连接
// 注:p不是表头,或者链表本身是循环链表
c.删除p结点的直接后继结点的语句序列是
15:Q=p->next; //Q指向p的下一结点(即直接后继结点)
1:P->next=P->next->next; //p的下一结点修改为Q的下一结点
11:P->next->priou=P; //p的下一结点(此时为Q的下一结点)的前一结点修改为p,如此将Q断开了
18:free(Q); // 释放Q即可
d.删除p结点的直接前驱结点的语句序列是
16:Q=P->priou; //Q指向p的直接前驱结点
2:P->priou=P->priou->priou; //p的直接前驱修改为Q的直接前驱
10:P->priou->next=P; //p的直接前驱的下一结点修改为p,如此时Q断开并提出
18:free(Q); // 释放Q
e.删除p结点的语句序列是
9:P->priou->next=P->next; //p的直接前驱的下一结点修改为p的直接后继
14:P->next->priou=P->priou; //p的直接后续的上一结点修改为p的直接前驱,如此将p提出
17:free(P); //释放p
以上均假设所用到的结点是有效的.
热心网友
时间:2023-10-23 12:18
答案不是唯一的,部分句子可以互换.
a.在P结点后插入S结点的语句序列是
12:P->next->priou=S; //p的下一结点的前一结点修改为S
7:S->next=P->next; //S的下一结点修改为p的下一结点,如此,12和7将p的下一结点与s连结了.
3:P->next=S; // p的下一结点修改为S
6:S->priou=P; //S的上一结点修改为p,如此,p和S连接起来了
//注:前提是p不是最后一个结点,或者链表本身是循环链表
b.在P结点前插入S结点的语句序列是
13:P->priou->next=S; //p的前一结点的后一结点修改为S
8:S->priou=P->priou; //s的前一结点修改为p的前一结点,如此2句,将p的前一结点和S连接了
5:S->next=P; // S的下一结点修改为p
4:P->priou=S; // p的上一结点修改为s,如此也将p和S连接
// 注:p不是表头,或者链表本身是循环链表
c.删除p结点的直接后继结点的语句序列是
15:Q=p->next; //Q指向p的下一结点(即直接后继结点)
1:P->next=P->next->next; //p的下一结点修改为Q的下一结点
11:P->next->priou=P; //p的下一结点(此时为Q的下一结点)的前一结点修改为p,如此将Q断开了
18:free(Q); // 释放Q即可
d.删除p结点的直接前驱结点的语句序列是
16:Q=P->priou; //Q指向p的直接前驱结点
2:P->priou=P->priou->priou; //p的直接前驱修改为Q的直接前驱
10:P->priou->next=P; //p的直接前驱的下一结点修改为p,如此时Q断开并提出
18:free(Q); // 释放Q
e.删除p结点的语句序列是
9:P->priou->next=P->next; //p的直接前驱的下一结点修改为p的直接后继
14:P->next->priou=P->priou; //p的直接后续的上一结点修改为p的直接前驱,如此将p提出
17:free(P); //释放p
以上均假设所用到的结点是有效的.