一、单选题
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;
=q;
D.p->next=&b;
正确答案:B
5、下面程序执行后的输出结果是( )。
#include <stdio.h>
#include <stdlib.h>
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 <stdio.h>
struct NODE { int 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 <stdio.h>
#include <stdlib.h>
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));
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论