由於順序棧的操作位置基本在棧底,所以,不需要查詢插入和刪除的位置,也不需要移動元素,因而順序棧的基本操作要比順序表簡單的多,其基本操作時間複雜度均為o(1)。下面給出順序棧的部分操作的實現。
(1)初始化操作。順序棧的初始化就是構造乙個空的順序棧s,初始分配的最大容量為maxsize,預設的需要擴容的增量為incresize。其主要操作是:申請儲存控制項,棧頂指標的初始值置為-1.
void initstack_sq(sqstack &s, int maxsize=stack_init_size, int incresize=stackincrement)//initstack_sq
int stacklength_sq(sqstack s)//stacklength_sq
bool push_sq(sqstack &s, elemtype e)
s.stack[++top]=e;
//棧頂指標上移,元素e進棧
return
true;
}//push_sq
(4)出棧操作。將元素s的棧頂元素刪除。其主要操作是:先判斷棧頂指標書否為空,若非空,則將棧頂元素取出,然後將棧頂指標減1.
bool pop_sq(sqstack &s, elemtype &e)//pop_sq
(5)取棧頂操作。取出順序棧s的棧頂元素的值。其主要操作是:先判斷順序棧是否為空,若非空,則將棧頂元素取出。
bool gettop_sq(sqstack s,elemtype e)//gettop_sq
(6)判斷棧空操作。判斷順序棧s是否為空。若s為空則返回true,否則返回false。
bool stackempty_sq(sqstack s)
(7)撤銷順序棧操作。釋放順序棧s所占用的儲存空間。
void destroystack_sq(sqstack &s)//destroystack_sq
總結
對於順序棧s的相關操作,歸納起來主要有以下4個要素。
棧 順序棧的基本操作
棧也是一種線性表,但是棧是一種操作受限的線性表,因此也可稱它為限定性的資料機構。棧是限定僅在表尾進行插入或刪除操作的線性表。棧的表尾為它的棧頂,表頭為它的棧底。先進入棧的後出棧,後進入棧的先出棧。所以,棧被稱為後進先出的線性表。順序棧基本操作的實現 include include define in...
棧 順序棧的基本操作
棧 作為一種限定性線性表,是將線性表的插入和刪除操作限制為僅在表的一端進行,通常將表中允許插入 刪除操作的一端稱為棧頂。下面給出順序棧的 演示。順序棧 採用順序儲存結構實現的棧,即利用一組位址連續的儲存單元依次存放自棧底的資料元素,同時由於棧操作的特殊性,還必須附設乙個位置指標top來動態的指示 棧...
順序棧 基本操作
include include define maxsize 10 typedef struct sqstack 均通過傳遞指標的方式傳參 void create void insert sqstack s void delete sqstack s void viewdata sqstack s ...