【单选题】
在一个单链表中,已知q结点是p结点的前趋结点,若在q和p之间插入s结点,则须执行( )。
①
s->next=p->next; p->next=s
③
p->next=s->next; s->next=p
【单选题】
在单链表指针为p的结点之后插入指针为s的结点,正确的操作是( )。
【单选题】
若有以下定义:structnode{intdata;structnode*next;}*p,*q;已建立如下图所示的链表:┌──┬──┐┌──┬──┐...p→│data│next┼→│data│NULL│└──┴──┘└──┴──┘┌──┬──┐q→│data│next│└──┴──┘不能将指针q所指结点连到上图所示链表末尾的语句是()。
①
q-next=NULL;p=p-p-next=q;
②
p=p-p-next=q;q-next=NULL;
【判断题】
在双向链表中,要在p所指的结后插入q所指的结点(设q所指的结点已赋值),其中所用的一条语句(p-next)-prior=q; 的功能是使P所指结点的直接前驱的左指针指向q 。
【单选题】
设链栈中结点的结构:data为数据域,next为指针域,且top是栈顶指针。若想在链栈的栈顶插入一个由指针s所指的结点,则应执行下列( )操作。
①
s-next=top-next;top-next=s
③
s-next=top;top=top-next
【单选题】
在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是( )。
①
p->next=s; s->prior=p; p->next->prior=s; s->next=p->next;
②
s->prior=p; s->next=p->next; p->next=s; p->next->prior=s;
③
p->next=s; p->next->prior=s; s->prior=p; s->next=p->next;
④
s->prior=p; s->next=p->next; p->next->prior=s; p->next=s;
【单选题】
若有以下定义:structnode{intdata;structnode*next;}structnodem,n,k,*head,*p;已建立如下图所示的链表:mnk┌──┬──┐┌──┬──┐┌──┬──┐head→│data│next┼→│data│NULL│p→│data│next│└──┴──┘└──┴──┘└──┴──┘指针head指向变量m,m.next指向变量n,p指向变量k,不能把结点k插到m和n之间形成新链表的程序段是()。
②
(*head).next=p;(*p).next=
【单选题】
在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用语句( )。
【单选题】
在一个栈顶指针为top的链栈中,将一个p指针所指的结点入栈,应执行( )。
②
B.p-next=top-top-next=p;
【单选题】
设p为指向单循环链表上某结点的指针,则*p的直接前驱( )。