已知sq是带头结点的非空单链表,且*p结点既不是第一个结点,也不是最后一个结点,则 ①删除*p结点的直接后继结
已知sq是带头结点的非空单链表,且*p结点既不是第一个结点,也不是最后一个结点,则
①删除*p结点的直接后继结点的语句序列。
②删除*p结点的直接前驱结点的语句序列。
③删除*p结点的语句序列。
④删除第一个结点的语句序列。
⑤删除最后一个结点的语句序列。
已知sq是带头结点的非空单链表,且*p结点既不是第一个结点,也不是最后一个结点,则
①删除*p结点的直接后继结点的语句序列。
②删除*p结点的直接前驱结点的语句序列。
③删除*p结点的语句序列。
④删除第一个结点的语句序列。
⑤删除最后一个结点的语句序列。
已知3个带头结点的线性链表A、线性链表B和线性链表C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对链表A进行如下操作:使操作后的链表A中仅留下3个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为D(m+n+p),其中m、n和p分别为3个表的长度。
已知带表头结点的非空单链表L,指针P指向L链表中的一个结点(非首结点、非尾结点),试从下列提供的答案中选择合适的语句序列。
a)P=P->next;
b)P->next=P;
c)P->next=P->next->next;
d)P=P->next->next;
e)while(P!=NULL)P=P->next;
f)while(Q->next!=NULL){P=Q;Q=Q->next;}
g)while(P->next!=Q)P=P->next;
h)while(P->next->next!=Q)p=p->next;
i)while(P->next->next!=NULL)P=P->next;
j)Q=P;
k)Q=P->next;
I)P=L;
m)L=L->next;
n)free(Q);
A.p=NULL;
B.p=head;
C.head=p;
D.p->next=head;
算法实现的思路为:在有序单链表中插入一个数据元素x,首先要找到该元素应该插入到什么位置,才能保证插入后的单链表仍为有序表。因此,算法的第一步是寻找x的位置:设置指针p、q,最初p指向头结点,q指向头结点的下一个结点,比较q所指数据域的值与x的大小,如果小于x,则p、q分别向后移动一个位置,使p始终作为q的前驱结点,然后重复上面的比较过程;如果比较结果大于x或是比较到最后单链表结束了,则找到了插入位置,在p与q之间插入结点x即可。算法的具体实现如下:
非空的循环单链表head的尾结点p满足()。
A.p一>next=head
B.p->next=NULL
C.p=NULL
D.p=head
带头结点的单链表head为空的判断条件是__________。
A.head=NULL
B.head一>next=NULL
C.head一>next=head
D.head!=NULL
不带头结点的单链表head为空的判定条件是______。
A.head=NULL
B.head一>next=NULL
C.head一>next=head
D.head!=NULL