线性群体中的元素次序与其位置关系是对应的。
在线性群体中,可以按照访问元素的不同方法分为直接访问、顺序访问和索引访问。
(1)直接访问
对可直接访问的线性群体,我们可以直接访问群体中的任何一个元素,而不必首先访问该元素之前的元素。例如,可以通过数组元素的下标直接访问数组中的任何一个元素。
(2)顺序访问
对顺序访问的线性群体,只能按元素的排列顺序从头开始依次访问各个元素。
(3)栈和队列
有两种特殊的线性群体是栈和队列。
①栈
栈是只能从一端访问的线性群体,可以访问的这一端称为栈顶,另一端称为栈底。对栈顶位置的标记称为栈顶指针,对栈底位置的标记称为栈底指针。向栈顶添加元素称为“压入栈”,删除栈顶元素称为“弹出栈”。栈中元素的添加和删除操作具有“后进先出”的特性。
栈的应用非常广泛,编译系统就是利用栈来实现函数调用时的参数传递和保留返回地址。编译器对高级语言中表达式的处理也可以通过栈来实现。用高级语言编写程序时,我们经常写出类似以下形式的表达式“
a/b+c*d;
编译系统在处理表达式的时候,需要确定运算次序。为此,需要建立两个栈:操作数栈和操作符栈,然后从左到右扫描表达式。
算法流程图如下所示:
栈处理表达式a/b+c*d的过程示意图如下所示:
②队列
和栈一样,队列也是一种特殊的线性群体。队列是只能向一端添加元素,从另一端删除元素的线性群体,可以添加元素的一端称为队尾,可以删除元素的一端称为队头。对队头位置的标记称为队头指针,对队尾位置的标记称为队尾指针。向队尾添加元素称为“入队”,删除队头元素称为“出队”。队列中元素的添加和删除操作具有“先进先出”的特性。队列的应用也很广泛,计算机操作系统用队列来处理打印作业的调度。下图是队列的逻辑示意图: