初始化函数——将结构内每个数据成员都考虑一遍
刚开始数组的格子里面都是随机值,而头结点(有效和空闲)或是其他结点的next域里面要是随机值就出问题了,你连接的下一个节点是个随机值,不知道它在哪或是有无
所以必须把它初始化重置赋值
有效头结点0的next——应该置成0(静态链表模拟的是循环链表),因为刚开始初始化,即没有一个有效数据结点,
除了2个头结点外所有的结点都是空闲点
空闲头结点1的next——应该置成2
依次往下,最后一个空闲结点的next为1,回到头结点
我们已知链表的头结点的数据域是不用的,所以这里的2个头结点的数据域也不用
且ps就指向下图中的一大片
测试
头插函数
里面用到静态函数判满
——所有结点都为有效数据就是满,反之空闲结点都没了,即ps[1].next==1;
代码过程解释如下:
1.获取空闲结点:int p=2;如图p指向2——时间复杂度O1
2.空闲链剔除空闲点:穿透删除链不断
4.空闲点插入有效链
4.1
4.2头插完成了
插入跟前面链表同理
输出Show函数
测试
函数后的()内部是指针才有取地址符&,数组s没有&