link *next
link next
struct link*next
struct link next
第1题:
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
[说明]
该程序从正文文件test.txt中读入一批整数,并将它们按照递增的顺序存放在一个链表中。其中,函数struct Link*insertChain(struct Link*head,structLink*k)用来寻找结点k在链表head中的插入位置,并插入该结点。
[C程序]
include <stdio.h>
include <stdlib.h>
struct Link
{ int number;
struct Link *next;
}
struct Link *insertChain(struct Link *head,struct Link *k);
VOid main()
{ struct Link *ptr, *head;
FILE *fd;
int hum;
if((fd=fopen("test.txt","r"))==NULL)
{print("Cannot open this file!\n");
return;
}
head=NULL;
while(fscanf(fd,"%d",hum)==1)
{ ptr=(1);
if(!ptr) return;
ptr->number=hum;
ptr->next=NULL;
head=insertChain(head,ptr);
}
(2);
return;
}
struct Link *insertChain(struct Link *head,struct Link *k)
{ struct Link *ptr,*u;
ptr=head;
while(ptr && k && k->number>ptr->number)
{ u=ptr; (3) }
if(ptr == head) head=k;
else (4);
(5);
return head;
}
第2题:
以下程序的功能是建立—个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。
include<stdio.h>
struct list { int data;struct list *next;};
struct list * creatlist()
{ struct list *p,*q,*ph;int a;ph=(struct list *)malloc(sizeof(struct
第3题:
若有以下定义: struct link { int data; struct link *next; }a,b,c,*p,*q;且变量a和b之间已有下图所示的链表结构:

指针p指向变量a,指针q指向变量c,则能够把c插入到a和b之间并形成新的链表的语句组是( )。
A.a.next=c;c.next=b;
B.p.next=q;q.next=p.next;
C.p->next=&c;q->next=p->next;
D.(*p).next=q; (*q).next=&b;
第4题:
已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填______。 struct link { char data; ______; }node;
A.struct link next
B.link * next
C.struct next link
D.struct link *next
第5题:
已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填______。 struct 1ink { char data; }node;
A.struct link next
B.link*next
C.sluct next link
D.struct link*next
第6题:
为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域)则在
( )处填入的选项是( )。*struetlink{ehardata;( )node;
A.struetlink*next;
B.linknext;
C.link$next;
D.struetlinknext;
第7题:
单链表的每个结点中包括一个指针link,它指向该结点的后继结点。现要将指针q指向的新结点插入到指针P指向的的单链表结点之后,下面的操作序列中哪一个是正确的?

A.q:=p↑.link; p↑.link:=q↑.link;
B.p↑.link:=q↑.link; q:=p↑.link;
C.q↑.link:=p↑.link;p↑link:=q;
D.p↑.link:=q; q↑.link:=p↑.link;
第8题:
单向链表的每一个结点都有一个指向它的后续结点的指针link,现有结点p和q,结点q在结点p的前面,要删除结点p,正确的操作应该是
A.q↑. link:=p↑. link;
B.p ↑. link:= q ↑. link;
C.q↑. link:=p; p↑. link:=q;
D.q:=p↑. link; p↑. link:= q ↑. link;
第9题:
第10题:
设单链表中指针p指向结点a,若要删除p之后的结点(若存在),则需修改指针的操作为()。
第11题:
设线性链表的存储结构如下: struct node {ELEMTP data; /*数据域*/ struct node *next; /*指针域*/ } 试完成下列在链表中值为x的结点前插入一个值为y的新结点。如果x值不存在,则把新结点插在表尾的算法。 void inserty(struct node *head,ELEMTP x,ELEMTP y) {s=(struct node *)malloc(sizeof(struct node)); (); if(){s->nexr=head;head=s;} else { q=head;p=q->next; while(p->dqta!=x&&p->next!=NULL){q=p;()} if(p->data= = x){q->next=s;s->next=p;} else{p->next=s;s->next=NULL;} } }
第12题:
printf(%d,%d,h->data,a.next.data);
printf(%d,%d,a.data,(*a.next).data);
printf(%d,%d,h->data,(*a.next).data);
printf(%d,%d,a.data,a.next->data);
第13题:
单键表的每个结点中包括一个指针link,它指向该结点的后继结点。现要将指针q指向的新结点插入到指针p指向的单链表结点之后,下面的操作序列中哪一个是正确的?
A.q:=p^.link;p^.link:=q^.link;
B.p^.link:=q^.link;q:=p^.link;
C.q^.link:=p^.link;p^.link:=q;
D.p^.link:=q;q^.link:=p^.link;
第14题:
若以下定义:struct link { int data; struck link *next;}a,b,c,*p,*q; 且变量a和b之间已有如下图所示的链表结构:

指针p指向变量a, q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是
A.a.next=c;c.next=b;
B.p.next=q;q.next=p.next;
C.p->next=&c;q->next=p->next;
D.(*p).next=q;(*q).next=&b;
第15题:
设链式栈中结点的结构为(data,link),且top是指向栈顶的指针。若想在链式栈的栈顶插入一个由指针s所指的结点,则应执行的操作是(31)。
A.top->link=s;
B.s->link=top->link;top->link=s;
C.s->link=top;top=s;
D.s->link=top;top=top->link;
第16题:
用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j沿链移动的操作为()。
A.j=r[j].next
B.j=j+1
C.j=j->next
D.j=r[j]->next
第17题:
单链表的每个结点中包括一个指针link,它指向该结点的后继结点。现将从单链表中删除指针p所指的下一结点。下面的操作序列中哪一个是正确的?
A.q:=p^.1ink;p^.link:=q^.link
B.p^.link:=q^.link;q:=p^.link
C.q^.link:=p^.link;p^.link=q
D.p^.link:=q;q^.link:=p^.link
第18题:
已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填______。 struct link { char data; ______, }node;
A.struct link next
B.link *next
C.stuct next link
D.struct link *next
第19题:
设单链表中结点的结构为(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
第20题:
第21题:
设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为()。
第22题:
设线性链表的存储结构如下: struct node {ELEMTP data; /*数据域*/ struct node *next; /*指针域*/ } 试完成下列建立单链表的算法。 creat() {char var; head=(struct node *)malloc(sizeof(struct node)); head->next= () ; while((var=getchar())!=‘/n’){ ptr=( struct node *)malloc(sizeof(struct node)); ptr->data= var ;ptr->next=head->next; head->next= ptr ; } }
第23题:
设有一个不带头结点的单向链表,头指针为head,结点类型为NODE,每个结点包含一个数据域data和一个指针域next,该链表有两个结点,p指向第二个结点(尾结点),按以下要求写出相应语句。新开辟一个结点,使指针s指向该结点,结点的数据成员data赋值为1。