一,结构体
结构体为已有数据类型的组合
1,结构体声明及赋值
struct是声明结构体类型时所必须使用的关键字,不能省略,它向编译系统声明这是一个“结构体类型”,它包括不同类型的数据项。应当说明struct student是一个类型名,它和系统提供的标准类型(如int、char、float、 double 等)一样具有同样的作用,都可以用来定义变量的类型,只不过结构体类型需要由用户指定。要注意末尾有分号;
2,结构体初始化
结构体的初始化是按声明顺序依次初始化
3,结构体部分初始化
部分初始化其他为0,中间用逗号','分隔,每个开头加点'.'
4,结构体的对齐
消耗空间提高程序执行效率
(1、结构体按照其最长成员大小对齐,意味着最终的大小必须是最长成员大小的整数倍;
(2、结构体成员按照结构体成员声明先后次序依次存放,并且每个成员的首字节放置的位置必须能够整除成员的字节数;
(3、如果结构体某个成员的字节数大于CPU的字节数,则最长按照CPU的字节数对齐;
(4、用预处理命令#pragma pack(n) 可以强制编译器按照指定的n来对齐,合法的n的数值分别是1、
2、4、8、16。
5,结构体的遍历
6,结构体数组的遍历
7,结构体作函数参数传参多用指针传参
s->id += 10 等同于 (*s).id += 10
结构体允许整体赋值如 s1 = s2,结构体间无法大小比较,其成员可以比较
8,逆序及按成绩排序
9,按名字排序,名字为字符型数组不得整体赋值
10,调用函数qsort快速排序
二,单向链表
由若干个节点Node组成,节点有值域和指针域两部分,各个节点地址不连续
有头链表,从栈区开空间作首节点,由头指针pHead-->首节点-->头节点
头插法
节点结构体
头插
遍历
统计有效节点数和判断是否空链表
主函数