实验8-1链表初步
【实验目的】
1. 掌握链表的各种形式 2. 掌握节点的动态创建函数
3. 掌握头插法和尾插法创建简单单链表
【课后练习】
一、 选择题
1. 有以下结构体类型定义及变量声明,且如下图所示,指针p指向变量a,指针q指向
变量b,则不能把结点b连接到结点a之后的语句是 。 struct {
char data;
struct node * next; }a, b, *p = &a, *q = &b;
A.a.next = q; B.p.next = &b; C.p->next = &b; D.(*p).next = q;
2. 若以建立下图中的链表结构,指针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;
二、填空题
1. 链表有一个“头指针”变量,专门用来存放 第一个结点的地址 。
2. 常常用结构体变量作为链表中的结点,单链表中,每个结点都包括两部分:一个是 数据域 ,用来存放 用户数据信息 ,一个是 指针域 , 用来存放 下一个结点的地址 。
3. 单链表中,最后一个节点的指针域常常设置为 NULL ,表示链表到此结束。
4. 为建立如图所示的结点存储结构,请将定义补充完整
struct node { char data;//数据域 struct node * next ;//指针域 }v1;
5. 若要利用下面的程序片断使指针变量p指向一个存储整型数据的变量空间,则应填入
什么内容?
int *p;
p= (int *) malloc (sizeof(int));
三、 以下程序采用栈式创建(所谓的“静态创建”)一个有2个学生数据的链表,
并输出各结点中的数据,请填空完成下列程序设计。
L20: &b L21: NULL
L26: p->num, p->score L27: p->link
四、 以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指
针。请填空完成程序设计
while(p!=NULL) { c++; p=p->next; }
五、 已知head指向一个不带头结点的单链表,连表中的每个结点包含数据域和指
针域,以下函数求出链表中所有结点数据域的和值,作为函数值返回,请填空完成程序设计。
L23: L28: L30: L33:
head p->data p->next s
相关推荐: