順序棧:棧的順序存儲結構

轉至:http://www.nowamagic.net/librarys/veda/detail/2271

既然棧是線性表的特例,那麼棧的順序存儲其實也是線性表順序存儲的簡化,我們將其簡稱爲順序棧。下標爲0的一端作爲棧底比較好,因爲首元素都存在棧底,變化最小,所以讓它作棧底。

我們定義一個top變量來指示棧頂元素在數組中的位置,這top就如同中學物理學過的遊標卡尺的遊標,如上圖所示,它可以來回移動,意味着棧頂的top可以變大變小,但無論如何遊標不能超出尺的長度。同理,若存儲棧的長度爲StackSize,則棧頂位置top必須小於StackSize。當棧存在一個元素時,top等於0,因此通常把空棧的判定條件定爲top等於-1。

下面看看棧的結構體定義:

#include "stdio.h"

/* 存儲空間初始分配量 */
#define MAXSIZE 20

/* SElemType類型根據實際情況而定,這裏假設爲int */
typedef int SElemType;

/* 順序棧結構 */
typedef struct
{
    SElemType data[MAXSIZE];
    int top; /* 用於棧頂指針 */
}SqStack;


若現在有一個棧,StackSize是5,則棧普通情況、空棧和棧滿的情況示意圖可以從下圖清楚看出。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章