链表(二)
本文主要为mooc课程上北京理工大学C语言程序设计相关知识点的笔记与整理。
关于指针数组与数组指针的说明: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。