链表(二)

本文主要为mooc课程上北京理工大学C语言程序设计相关知识点的笔记与整理。

原课程地址:https://www.icourse163.org/learn/BIT-46004?tid=1450371454#/learn/content?type=detail&id=1214719596&cid=1218680522&replay=true

关于指针数组与数组指针的说明:https://www.cnblogs.com/mq0036/p/3382732.html

关于运算符优先级的说明:http://c.biancheng.net/view/161.html

1 typedef自定义类型

之前的内容中,结构和联合可以定义全新的自定义类型,而typedef则不产生全新的自定义类型,它是来说明一个数据类型,替代已有的数据类型。例如,我们可以使用一个有意义的名字,来替代已有的类型,提高程序的可读性;可以给一个复杂的数据类型起一个简单的名字,提高程序的应用性;也可以定义一个其他语言中的关键字来说明c语言的数据类型,提高程序的可移植性。

链表(二)

可以利用typedef来定义c语言中没有的数据类型

链表(二)

链表(二)

链表(二)

链表(二)

没有typedef ,OLD是一个结构体变量;有typedef,OLD是一个结构体类型,即DATA的别名。

2 枚举类型

链表(二)

系统会自动给数据列表中的数据从0开始赋值。

链表(二)

大括号中的值作为常量不可以被赋值,但可以被直接引用。

链表(二)

通过枚举类型可以定义一个取值有限的变量;取值是通过常量来进行描述的。

3 链表的概念

动态数据类型代表——链表

链表(二)

链表(二)

链表(二)

 链表(二)

顺序存取单元是一次性分配,所以要按最大需要的空间来分配存储空间,可能存在空间分配的效率问题。

链表(二)

链表(二)

链表(二)

链表(二)

链表(二)

链表(二)

定义结点最重要是要在其指针域定义一个指向该种结构的指针。

4 链表的基本操作

链表(二)

如何开辟存储空间:

链表(二)

链表(二)

在内存分配与释放的过程中要求malloc与free配对使用。若未使用free()的话,会导致malloc分配的内存空间泄露。

链表(二)

链表(二)

表头结点不存储基本信息。p指向表头结点的首地址,而表头指针也需要指向表头结点的首地址,等效于将p赋给head。

链表(二)

 链表(二)