判断题
1.在单向链表中,头指针中存放的是头结点的内容。
T
F
2.单向链表中的每个结点都需要动态分配内存空间。
T
F
3.通常使用结构的嵌套来定义单向链表结点的数据类型。
T
F
4.用链表代替数组进行数据操作时,查询更加方便。
T
F
选择题
1.以下程序的输出结果是( )。
struct HAR
{int x, y; struct HAR *p;} h[2];
int main(void)
{ h[0].x=1; h[0].y=2;
h[1].x=3; h[1].y=4;
h[0].p=h[1].p=h;
printf(“%d%d
”,(h[0].p)->x,(h[1].p)->y);
return 0; }
A.12
B.23
C.14
D.32
B.23
C.14
D.32
2.以下程序的输出结果是( )。
struct NODE{ int num; struct NODE *next; };
int main(void)
{ 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.10
B.20
C.30
D.40
B.20
C.30
D.40
3.设有如下定义的链表,则值为7的表达式是()。
struct st{
int n;
struct st *next;
} a[3] = {5, &a[1], 7, &a[2], 9, NULL}, *p = &a;
A.p->n
B.(p->n)++
C.(++p)->n
D.p->next->n
B.(p->n)++
C.(++p)->n
D.p->next->n
4.在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行()。
A.p->next=q->next; q->next=p;
B.q->next=p->next; p=q;
C.p->next=q->next; p->next=q;
D.1. q->next=p->next; p->next=q;
B.q->next=p->next; p=q;
C.p->next=q->next; p->next=q;
D.1. q->next=p->next; p->next=q;
5.下面程序段输入一行字符,按输入的逆序建立一个链表。
struct node{
char info;
struct node *link;
} *top, *p;
char c;
top=NULL;
while((c=getchat())!='
')
{ p=( struct node*)malloc(sizeof(struct node));
p->info=c;
(1分) ;
top=p;
}
A.top->link=p
B.p->link=top
C.top=p->link
D.p=top->link
B.p->link=top
C.top=p->link
D.p=top->link
6.若已建立下面的链表结构,指针p、q分别指向图中所示结点,则不能将q所指结点插入到链表末尾的语句是( )。
A.q->next=NULL; p=p->next; p->next=q;
B.p=p->next; q->next=p->next; p->next=q;
C.p=p->next; q->next=p; p->next=q;
D.p=(*p).next; (*q).next=(*p).next; (*p).next=q;
B.p=p->next; q->next=p->next; p->next=q;
C.p=p->next; q->next=p; p->next=q;
D.p=(*p).next; (*q).next=(*p).next; (*p).next=q;
填空题
1.下列函数用于将链表中各结点的数据依次输出。
struct student { long data; struct student *next; }; void print(struct student *head) { struct student *p ; p=head; if(head != NULL) do { printf("%ld ”, p->data); ; } while ( ); } |
2.已建立学生“英语”课程的成绩链表(成绩存于score域中,学号存于num域中), 下列函数用于输出不及格学生的学号和成绩,及补考学生人数。
void require(struct student *head) { struct student *p; long x; if( head != NULL) { x=0; ; while(p != NULL) { if( ) { printf(”%7d %6.1f ”, p->num, p->score); x++; } p = p->next; } printf(”%ld ”, x); } } |