线性表的顺序存储结构--数组(顺序表)、栈、队列
线性表
顺序存储结构--数组(顺序表)
优点: ①可以随机存取
②空间利用率高
③结构简单
缺点:①需要一片连续的存储空间
②插入删除会引起大量的元素移动,操作不便
③预分配空间可能不足也可能浪费
解决方法:限定一定条件下线性表--插入删除在固定的位置--栈和队列
栈[先进后出,后进先出]
特征:①在一端(栈顶)进行插入、删除操作
②一般用来容纳已经接受但不处理的信息
栈的实现:增设一指针top指向当前栈顶位置
栈的应用:①十进制转八进制
②矩阵连乘计算量
③方法的调用过程:a,保存返回地址b.局部变量值得保存
队列[先进先出]
特征:①总是在一端插入元素,另一端删除元素
队列的实现:
增设第一个元素的前面的指针front
增设指向最后一个元素的指针rear‘
循环队列:通过模运算,成为循环队列
队空:front==rear
队满:(rear+1)%m==front(正常情况下,应是front==rear,但是front==rear已经是判断队空的条件,无法区分队空还是队满,需要再去使用变量标识,在操作时需要判断造成时间上的浪费,不如浪费一个空间,即若rear+1==front时,又因为是循环数组所以(rear+1)%m==front,有种用空间换取时间的感觉)
队满时的元素个数:m-1
计算元素个数:(rear-front+m)%m(+-一个m时不改变求余的,但是如果rear-front<0时,可以通过+m得到余数)