设线性链表中结点的结构为(data,next)。已知指针q所指结点是指针结点p的直接前驱,若在*q与*p之间插入结点*s,则应执行下列()操作。
A.s->next=p->next;p->next=s;
B.q->next=s;s->next=p;
C.p->next=s->next;s->next=p;
D.p->next=s;s->next=q;
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
在单链表中,指针P指向元素为x的结点,实现“删除x的后继”的语句是(20)。
A.p=p→next;
B.p→next:p→next→next;
C.p→next=p;
D.p=p→next→next;
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
A.p=p→next;
B.p→next=p→next→next;
C.p→next=p;
D.p=p→next→next;
()阅读下列说明和C语言程序,将应填入 (n)处的语句写在答题纸的对应栏内。[说明]设有定义 #define ITEM struct item #define SIZE sizeof(ITEM) ITEM { int num; ITEM *next; }; ITEM *head=NULL; 下述函数定义实现按插表尾形式(即每一新表元素插入至当前所生成链表的表尾之后)生成一个正向线性链表。最后指向所生成链表表头的指针作为函数值返回。为生成一个线性链表,要求输入一批整型数据,并以-1作为结束标志。请填空完善程序。 ITEM *gene(ITEM *head) { ITEM *temp,*tail;/*tail指向当前链表尾结点*/ int intno; printf("Enter integer NO.,-1 to stop:\n"); scanf("%d",&intno); while (intno!=-1) { temp=(____(1)_____)malloc(SIZE); temp->num=intno; if (head==_____(2)_____) /*空表*/ { head=temp; tail=______(3)______; } else /*非空表*/ { ____(4)_______=temp; tail=temp; } scanf("%d",&intno); } return (_______(5)_______);
若已建立如下图所示的单向链表结构:在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是______。
A.p=p->next; s->next=p; p->next=s;
B.p=p->next; s->next=p->next; p->next=s;
C.s->next=NULL; p=p->next; p->next=s;
D.p=(*p).next; (*s).next=(*p).next; (*p).next=s;
假定已建立以下链表结构,且指针p和q已指向如下图所示的结点:
则以下选项中,可将q 所指结点从链表中删除并释放该结点的语句组是
A.(*p).next=(*q).next; free(p);
B.p=q->next; free(q);
C.p=q; free(q);
D.p->next=q->next; free(q);
A.free (q);p->next=q->next;
B.(*p).next=(*q).next;free(q);
C.q=(*q).next;(*p).next=q;free(q);
D.q=q->next;p->next=q;p=p->next;free(p):