2-1
对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()。
A.head==NULL
B.head→next==NULL
C.head→next==head
D.head!=NULL
2-2
链表不具有的特点是()。
A.可随机访问任一元素
B.插入、删除不需要移动元素
C.不必事先估计存储空间
D.所需空间与线性表长度成正比
2-3
结构说明和变量定义如下图所示, 指针p、q、r分别指向一个链表中的3个连续
结点。现要将q和r所指结点的先后位置交换, 同时要保持链表的连续, 以下错误的程序段是()。
struct node
{ int data;
struct node *next;} *p, *q, *r;
A.r->next =q; q->next =r->next; p->next =r;
B.q->next = r->next; p->next =r; r->next=q;
C.p->next=r; q->next=r->next; r->next = q;
D.q->next=r->next; r->next=q; p->next = r;
2-4
程序中已构成如下图所示的单向链表结构, 指针变量s、p、q均已正确定义, 并用于指向链表结点, 指针变量s总是作为头指针指向链表的第一个结点。
若有下列程序段:
q=s; s=s->next; p=s;
while(p->next) p=p->next;
p->next =q; q->next = NULL;
该程序段实现的功能是()。
A.首结点成为尾结点
B.尾结点成为首结点
C.删除首结点
D.删除尾结点
2-5
为了构建单链表,以下结构体类型定义正确的是:
A.
struct aa
{int a;struct aa *pa;
};
B.
struct bb
{int b;int *pb;
};
C.
struct cc
{int c;cc *pc;
};
D.
struct dd
{int *pd;int d;
};
2-6
如果二进制文件a.dat已经存在,现在要求写入全新数据,应以()方式打开。
A."w"
B."wb"
C."w+"
D."wb+"
2-7
若以“a+”方式打开一个已存在的文件。则以下叙述正确的是()。
A.文件打开时, 原有文件内容不被删除, 位置指针移到文件末尾, 可做添加和读操作
B.文件打开时, 原有文件内容不被删除, 位置指针移到文件开头, 可做重写和读操作
C.文件打开时, 原有文件内容被删除, 只可做写操作
D.以上各种说法都不正确
2-8
FILE *fp;
int x=32;
fp=fopen("my.txt","wb");
fwrite(&x,4,1,fp);
fclose(fp);
下面说法正确的是( )
A.my.txt保存的文件为文本文件,能够直接打开查看,文件内容为32。
B.fwrite是写文件,因此不用加&
C.my.txt虽然是文件文件,但内容是以二进制形式存储,不能直接打开查看。
D.fwrite是用于二进制的写操作,因为存储为txt文本文件,因此会转换成文本"32",作为文本文件存储。
2-9
有一个文本文件in.txt,其内容为"Thanks a lot."
(不含双引号),以下程序段的运行结果为_____。
FILE *fp;char str[80] ;if ( (fp = fopen("in.txt", "r"))!=NULL )fgets( str,6,fp );puts( str );
A.Thanks
B.Thanks a lot.
C.Thank
D.Thanks a lot
2-10
下列语句中,把变量fp定义为一个文件指针的是__________。
A.FILE *fp;
B.FILE fp;
C.file *fp;
D.file fp;