q=s->next;s=p->next;
q->next=s;s->next=p;
s=p->next;q=s->next;
s->next=p;q->next=s;
第1题:
在单链表指针为p的结点之后插入指针为s的结点,正确的操作是()。
A.p->next=s;s->next=p->next;
B.s->next=p->next;p->next=s;
C.p->next=s;p->next=s->next;
D.p->next=s->next;p->next=s;
第2题:
在单链表中在指针p所指节点后插入节点q的操作是
A.q:=p↑.link;p↑.link:=q↑.link
B.p↑.link:=q↑.link;q↑.link:=p↑.link
C.q↑.link:=p;p↑.link:=q
D.q↑.link:=p↑.link;p↑.link:=q
第3题:
第4题:
在一个单链表中,若q节点是p节点的前驱节点,若在q与p之间插入节点s,则执行( )。
A.s→qink=p→link; p→link=s
B.p→link=s; s→qink=q
C.p→link=s→link; s→link=p
D.q→link=s; s→link=p
第5题:
在一个单链表中,若p所指结点不是最后结点,在p所指结点之后插入s所指结点,则应执行(32)操作。
A.s->link=p;p->link=s;
B.s->link=p->link:p->link=s:
C.S->link=p->link; p=s:
D.p->link=s:s->link=p:
第6题:
阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。
【说明】
函数DeleteNode(Bitree*r,inte)的功能是:在树根节点指针为r的二叉查找(排序)树上删除键值为e的节点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树节点的类型定义为:
typedef struct Tnode{
int data;/*节点的键值*/
struct Tnode *Lchild,*Rchiid;/*指向左、右子树的指针*/
}*Bitree;
在二叉查找树上删除一个节点时,要考虑3种情况。
①若待删除的节点p是叶子节点,则直接删除该节点。
②若待删除的节点p只有一个子节点,则将这个子节点与待删除节点的父节点直接连接,然后删除节点。
③若待删除的节点p有两个子节点,则在其左子树上,用中序遍历寻找关键值最大的节点 s,用节点s的值代替节点p的值,然后删除节点s,节点s必属于上述①、②情况之一。
【函数5-5】
int DeleteNode(Bitree *r,int e){
Bitree p=*r,pp,s,c;
while( (1) {/*从树根节点出发查找键值为e的节点*/
pp=p;
if(e<p->data)p=p->Lchild;
else p=p->Rehild;
}
if(!p)retrn -1;/*查找失败*/
if(p->Lchild && p->Rchild){/*处理情况③*/
s=(2); pp=p;
while( (3)){pp=s;s=s->Rchild;}
p->data=s->data;p=s;
}
/* 处理情况①、②*/
if((4))c=p->Lchild;
else c=p->Rchild;
if(p== *r)*r=c;
else if((5))pp->Lchild=c;
else pp->Rchild=c;
free(p);
return 0;
}
第7题:
A、p->next=s;s->prior=p;p->next->prior=s;s->next=p->next;
B、s->prior=p;s->next=p->next;p->next=s;p->next->prior=s;
C、p->next=s;p->next->prior=s;s->prior=p;s->next=p->next;
D、s->prior=p;s->next=p->next;p->next->prior=s;p->next=s;
第8题:
在循环双链表的p所指的结点之前插入s所指结点的操作是()。
A.p->prior->prior
B.p->prior->prior
C.s->prior->next=s
D.s->prior->prior=s
第9题:
在循环双链表的p结点之后插入s结点的操作是______。
A.p→next=s;p→next→prior=s;s→prior=p;s→next=p→next;
B.s→!next=p;s→next=p→next;p→next=s;p→next→prior=s;
C.p→next=s;s→prior=p;p→next→prior=s;s→next=p→next;
D.s→prior=p;s→next=p→next;p→next→prior=s;p→next=s;
第10题:
设单链表中节点的结构为(data,link)。已知指针q所指节点是指针p所指节点的直接前驱,若在*q与*p之间插入节点*s,则应执行下列哪一个操作?
A.s↑.link:=p↑.link;p↑.link:=s
B.q↑.link:=s;s↑.link:=p
C.p↑.link:=s↑.link;s↑.link:=p
D.p↑.link:=s;s↑.link:=q