第一范文网 - 专业文章范例文档资料分享平台

C - lab10-1 - 链表初步

来源:用户分享 时间:2025/11/21 8:30:02 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

课程:C语言程序设计 学号: 姓名: 班级:

实验10-1 链表初步

【知识点回顾】

1. 一

1)

【典型例题】

1. 例题1, 2. 例题2,

//exp2

3. 例题3,

//exp3

【Q&A】

1. Q:宏NULL表示什么?

A:NULL实际是表示0.当指针为0时,会要求编译器把它看成是空指针而不是整数0.提供宏NULL只是为了避免混乱。赋值表达式p=NULL;用于明确地说明p是空指针。 2. Q:既然0用于表示空指针,那么空指针就是字节中各位都为0的地址,对吗??

A:不一定。每个C语言编译器都被允许用不同的方式来表示空指针,而且不是所有编译器都使用零地址的。一些编译器为空指针使用不存在的内存地址。硬件会检查出这种试图通过空指针访问内存的方式。我们不必关心如何在计算机内存储空指针。这是编译器专家关注的细节。重要的是,当在指针环境中使用0时,编译器会把它转换为适当的内部形式。 3. Q:强制类型转换malloc或者其他内存分配函数的返回值,有无必要?

A:强制类型转换这些函数返回的值类型,是经典C延留下来的习惯,源于经典C中,内存分配函数返回char*类型的值,用强制类型转换实现是必要的。而标准C却不是必需的,因为void *型指针会在复制操作时自动转换为任何指针类型。

【实验内容】

1. 请编写一个函数void wndProc(char*msg),要求在给定字符串作为实际参数时,此函

数搜索下列所示的结构数组,寻找匹配的命令名,然后调用和匹配名称相关的函数。

struct {

char *cmd_name;

void (*cmd_pointer)(void); }file_cmd[]=

1

课程:C语言程序设计 学号: 姓名: 班级:

{ };

{\{\{\{\

new_cmd}, open_cmd}, close_cmd}, save_cmd}, save_as_cmd}, print_cmd},

{\{\ {\{\

{\save_all_cmd},

exit_cmd},

2. 设计程序,动态创建(堆式创建)不带有头结点的包含10个结点的单链表,该链表结点由整型数据域和指针域构成,键盘输入整型数据,依次为1,2,3,4,5,6,7,8,9,10:

1) 采用头插法创建单链表: 2) 采用尾插法创建单链表: 3. 已知head指向一个不带有头结点的单链表,链表中每个结点包含数据域和指针域,以下

程序片断求出链表所有结点中,数据域最大的结点的位置,由指针变量s传回主调函数,请完成程序设计。 4. 针对Lab9-2中实验内容1,某航空公司的座位预定程序设计,要求改动如下:

1) 创建一个不带头结点的单链表,每个结点要包括一个用于标识座位的编号、一个标

识座位是否已分配出去的标记、座位预订人的姓、座位预订人的名、以及指向下个结点的指针域。

2) 尝试输出链表中的结点信息

【课后练习】

1. 选择题:

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所指的

结点插入到链表末尾的一组语句是: 。

2

课程:C语言程序设计 学号: 姓名: 班级:

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;

2. 填空题:

1) 链表有一个“头指针”变量,专门用来存放 。

2) 常常用结构体变量作为链表中的结点,单链表中,每个结点都包括两部分:一个

是 ,用来存放 ,一个是 , 用来存放 。

3) 单链表中,最后一个节点的指针域常常设置为 ,表示链表到此结束。 4) 为建立如图所示的结点存储结构,请将定义补充完整

struct node {

char data;//数据域

;//指针域 }v1;

5) 若要利用下面的程序片断使指针变量p指向一个存储整型数据的变量空间,则应填

入什么内容? int *p;

p= malloc (sizeof(int));

6) 以下程序采用栈式创建(所谓的“静态创建”)一个有2个学生数据的链表,并输出

各结点中的数据,请填空完成下列程序设计。

3

课程:C语言程序设计 学号: 姓名: 班级:

3. 以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表

不带有头结点)。请填空完成程序设计

4. 已知head指向一个不带头结点的单链表,连表中的每个结点包含数据域和指针域,以下函数求出链表中所有结点数据域的和值,作为函数值返回,请填空完成程序设计。

4

课程:C语言程序设计 学号: 姓名: 班级:

5

搜索更多关于: C - lab10-1 - 链表初步 的文档
C - lab10-1 - 链表初步.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c708904g9ap7z7sh756dw_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top