表
表:同一类数,按相邻的关系存储
所有的数据存入计算机无非两种手段:顺序、链式
用数组实现,下标表达逻辑关系,不需要额外空间。增删元素都要移动n-k个,O(N),效率低
用单链表实现,指针表达逻辑关系,需要额外空间,增删不需要移动元素,只需要找到指定位置,O(N)
删除的时候可以找到k位置,然后把k=k+1,再把k删除
间接寻址,数组用来存储元素的指针,就不用移动元素本身
栈:也是一种线性表,
强调应用性,特点:后进的先出
可以用数组实现,栈链可以用指针实现
应用:主程序调用子程序、递归、算式表达式、
中缀转后缀、地图四染色
队列,先进先出的线性表
用指针实现,单链表,定义头尾指针即可
用循环数组实现,比单纯的数组
不需要移动元素,能提高空间效率
实现循环数组,操作前需要用下标对maxsize取模运算
队头游标在第一个元素的前一个位置
牺牲一个元素空间,实现队空或队满的判断
应用:硬件缓存区,广度优先最短路线、子集划分