三、堆疊
3.1 堆疊
3.1.1抽象資料型別堆疊的定義
堆疊:限定僅在表尾進行插入或洗掉操作的線性表;表尾端稱為堆疊頂,表頭端稱為堆疊底,不含元素的空表稱為空堆疊,
特點:進堆疊操作:堆疊底元素先進堆疊,堆疊頂元素后進堆疊;
出堆疊操作:堆疊頂元素先出堆疊,堆疊底元素后出堆疊;
總結:堆疊的修改是按照后進先出的原則進行的,
3.1.2 堆疊的表示和實作
順序堆疊和鏈堆疊
順序堆疊:利用一組地址連續的存盤單元依次存放自堆疊底到堆疊頂的資料元素,同時,附設指標top指示堆疊頂元素在順序堆疊中的位置,
通常堆疊空表示為:top=0;
但是,一方面,如果以C語言作為描述語言時,C語言中的陣列下標約定從0開始,這樣設定(top=0)會帶來很大不便;
另一方面,由于堆疊在使用程序中需要最大空間的大小很難確定,所以,在初始化堆疊空時,不應該限定堆疊的最大容量,
比較合理的做法為:
-
先為堆疊分配一個基本容量
-
在應用程序中不斷擴大堆疊的容量空間(堆疊的空間不夠時)
做法:設兩個常量STACK_INIT_SIZE(存盤空間初始分配量)、STACKINCREMENT(存盤空間分配增量)
typedef struct{ SElemType *base; SElemType *top; int stacksize; }SqStack;
若base的值為null,則堆疊結構不存在;
堆疊空標記:top=base;
鏈堆疊:……
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/279168.html
標籤:C
上一篇:呼叫運算子與可呼叫物件
