首页 理论教育栈和线性链表在计算机基础和Office高级应用中的应用

栈和线性链表在计算机基础和Office高级应用中的应用

【摘要】:当栈顶指针为0时,说明栈空,不可进行退栈操作。1)线性链表线性表的链式存储结构称为线性链表。在某些应用中,对线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其前件结点;另一个称为右指针,用以指向其后件结点。2)带链的栈栈也是线性表,也可以采用链式存储结构。

1.栈的基本概念

栈是限定只在一端进行插入与删除的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈是按照“先进后出”或“后进先出”的原则组织数据的。

2.栈的顺序存储及其运算

用一维数组S(1∶m)作为栈的顺序存储空间,其中m为最大容量。在栈的顺序存储空间S(1∶m)中,S(bottom)为栈底元素,S(top)为栈顶元素。top=0表示栈空,top=m表示栈满。

栈的基本运算有3种:入栈、退栈与读栈顶元素。

1)入栈运算

入栈运算是指在栈顶位置插入一个新元素。首先将栈顶指针加一(即top+1),然后将新元素插入到栈顶指针指向的位置。当栈顶指针已经指向存储空间的最后一个位置时,说明栈空间已满,不能再进行入栈操作。这种情况称为栈“上溢”错误。

2)退栈运算

退栈是指取出栈顶元素并赋给一个指定的变量。首先将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量,然后将栈顶指针减一(即top-1)。当栈顶指针为0时,说明栈空,不可进行退栈操作。这种情况称为栈的“下溢”错误。

3)读栈顶元素

读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它赋给一个变量,因此栈顶指针不会改变。当栈顶指针为0时,说明栈空,读不到栈顶元素。(www.chuimin.cn)

小技巧:栈是按照“先进后出”或“后进先出”的原则组织数据的,但是出栈方式有多种选择,在考题中经常考查各种不同的出栈方式。

3.线性链表的基本概念

在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域,另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。链式存储方式既可用于表示线性结构,也可用于表示非线性结构。

1)线性链表

线性表的链式存储结构称为线性链表。在某些应用中,对线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其前件结点;另一个称为右指针,用以指向其后件结点。这样的表称为双向链表。

2)带链的栈

栈也是线性表,也可以采用链式存储结构。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为可利用栈。

疑难解答:在链式结构中,存储空间位置关系与逻辑关系是怎样的?

在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。