1.线性表
一、顺序存储
使用数组和一个指针即可满足,查找很方便,但是插入,删除比较麻烦
二、链式存储
使用节点,节点里是结构体包含数据和指向下一个节点的指针,插入,删除比较方便,但是查找比较麻烦
删除操作,先用*p指向要删除的节点,将此节点前后节点链接之后,free此节点,节省空间
三、广义链表
链表中使用union使得单元素数据和子表指针域公用一个存储空间,使用Tag判断节点是 单元素 还是 广义表
四、多重链表
矩阵的十字链表
2.堆栈
后缀表达式运算,从左到右。前缀表达式运算,从右到左
一、栈顺序存储
使用数组,栈顶指针,最大容量
二、链式存储
栈顶指针为链表头指针,不能为表尾指针。因为要进行进出栈,即加减节点,表尾删除后,前面的就找不到了
3.队列
队列为前减尾加
一、顺序存储
数组 循环
为避免front=rear造成不知道队列满还是空,有两种方法:一记录队列元素个数变量或者记录最后一次的操作是出/入栈。二少用一个空间,队满条件(rear+1)%数组长度=front
二、链式存储
头指向链表的头结点(因为头要进行删除),尾指向链表尾节点。