C程序设计(链表)习题与答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、单选题

1、链表不具有的特点是()。

A.不必事先估计存储空间

B.插入、删除不需要移动元素

C.可随机访问任一元素

D.所需空间与线性表长度成正比

正确答案:C

2、链接存储的存储结构所占存储空间()。

A.分两部分,一部分存放结点值,另一部分存放结点所占单元数

B.只有一部分,存放结点值

C.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针

D.只有一部分,存储表示结点间关系的指针

正确答案:C

3、链表是一种采用()存储结构存储的线性表。

A.网状

B.星式

C.链式

D.顺序

正确答案:C

4、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是()。

struct node {

char data;

struct node *next;

} a,b,*p=&a,*q=&b;

A.(*p).next=q;

B.p.next=&b;

C.a.next=q;

D.p->next=&b;

正确答案:B

5、下面程序执行后的输出结果是()。

#include

#include

struct NODE {

int num; struct NODE *next;

};

int main()

{ struct NODE *p,*q,*r;

p=(struct NODE*)malloc(sizeof(struct NODE));

q=(struct NODE*)malloc(sizeof(struct NODE));

r=(struct NODE*)malloc(sizeof(struct NODE));

p->num=10; q->num=20; r->num=30;

p->next=q;q->next=r;

printf("%d",p->num+q->next->num);

return 0;

}

A.30

B.40

C.10

D.20

正确答案:B

6、下面程序执行后的输出结果是()。

#include

struct NODE { i nt num; struct NODE *next; } ;

int main()

{ struct NODE s[3]={{1, '\0'},{2, '\0'},{3, '\0'}},*p,*q,*r;

int sum=0;

s[0].next=s+1; s[1].next=s+2; s[2].next=s;

p=s; q=p->next; r=q->next;

sum+=q->next->num; sum+=r->next->next->num;

printf("%d", sum);

return 0;

}

A.3

B.6

C.5

D.4

正确答案:C

7、在单向链表中,存储每个结点需有两个域,一个是数据域,另一个是指针域,它指向该结点的()。

A.开始结点

B.终端结点

C.直接后继

D.直接前趋

正确答案:C

8、对于一个头指针为head的带头结点的单向链表,判定该表为空表的条件是()。

A.head!=NULL

B.head→next==NULL

C.head→next==head

D.head==NULL

正确答案:B

9、以下程序的功能是建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中,请选择合适的选项填入()。

#include

#include

struct node {

char data; struct node *next;

};

struct node* CreatList(char *s)

{ struct node *h,*p,*q;

h=(struct node *)malloc(sizeof(struct node));

p=q=h;

while(*s!='\0') {

p=(struct node *) malloc(sizeof(struct node));

p->data=*s;

q->next=p;

q=______ ;

s++;

}

p->next=NULL;

return h;

}

int main()

{ char str[]="link list";

struct node *head;

head=CreatList(str);

return 0;

}

A.p

B.s

C.p->next

D.s->next

正确答案:A

10、有以下结构体说明和变量定义,指针p、q、r分别指向一个链表中的三个连续结点。

struct node {

int data;

struct node *next;

} *p, *q, *r;

现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是()。

A.p->next=r; q->next=r->next; r->next=q;

B.q->next=r->next; r->next=q; p->next=r;

C.q->next=r->next; p->next=r; r->next=q;

D.r->next=q; q->next=r->next; p->next=r;

正确答案:D

11、有以下结构体说明和变量定义,如图所示:

struct node {

int data;

struct node *next;

} *p, *q, *r;

现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的

相关文档
最新文档