在双向循环链表中,在p指针所指的结点后插入q所指向的新结点,其修改指针的操作是( )。
(1)编写一个算法,从任一给定的位置(pr,p)开始,将指针p右移k个结点。如果p移出链表,则将p为0,并让pr停留在链表最右边的结点上。
(2)编写一个算法,从任一给定的位置(pr,p)开始,将指针p左移k个结点。如果p移出链表,则将p置为0,并让pr停留在链表最左边的结点上。
已知P结点是某双向链表的中间结点,试从下列提供的答案中选择合适的语句序列。
a.在P结点后插入S结点的语句序列是________。
b.在P结点前插入S结点的语句序列是________。
c.删除P结点的直接前驱结点的语句序列是________。
d.删除P结点的直接后继结点的语句序列是________。
e.删除P结点的语句序列是________。
(1) P->next=P->next->next;
(2) P->prio u=P->prio u->prio u;
(3) P->next=S;
(4) P->prio u=S;
(5) S->next=P;
(6) S->prio u=P;
(7) S->next=P->next;
(8) S->prio u=P->prio u;
(9) P->prio u->next=P->next;
(10) P->prio u->next=P;
(11) P->next->prio u=P;
(12) P->next->prio u=S;
(13) P->prio u->next=S;
(14) P->next->prio u=P->prio u;
(15) Q=P->next;
(16) Q-P->prio u;
(17) free(P) ;
(18) free(Q) ;
假设在算法描述语言中引入指针的二元运算“异或”,若a和b为指针,则的运算结果仍为原指针类型,且
则可利用一个指针域来实现双向链表L。链表L中的每个结点只含两个域:data域和LRPtr域,其中L RPtr域存放该结点的左邻与右邻结点指针(不存在时为NULL) 的异或。若设指针L.Left指向链表中的最左结点,L.Right指向链表中的最右结点, 则可实现从左向右或从右向左遍历此双向链表的操作。试写一算法按任一方向依次输出链表中各元素的值。
设单链表中结点的结构为:
已知单链表中结点*p不是链尾结点,若在*p之后插人结点*s,则应执行下列()操作。
A、s->link=p;p->link=s;
B、p->link=s;s->link-p;
C、s->link-p->link;p=s;
D、s-->link=p->link;p->link=s;
O(n)的算法:将L改造为I.=(a1,a3,…,an,…,a4,a2)。
A.若二叉树使用顺序方式存储,则必须先将该二叉树补全为满二叉树。
B.若二叉树使用顺序方式存储,结点所在的下标对应着其在二叉树中的编号。
C.以顺序方式存储的二叉树可能会浪费大量空间。
D.若知道了二叉链表中根结点的指针,则整棵二叉树就唯一确定了。
设单链表中结点的结构为:
若想在单链表中摘除结点*p(*p既不是第一个也不是最后一个结点)的直接后继,则应执行以下()操作.
A、p->link=p->link->link;
B、p-p->link;p->link-p->link->link;
C、p->link=p->link;
D、p=p->link->link;