1.1棧的概念及結構
棧:一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一端
稱為棧頂,另一端稱為棧底。棧中的資料元素遵守後進先出lifo(last in first out)的原則。
壓棧:棧的插入操作叫做進棧/壓棧/入棧,入資料在棧頂。
出棧:棧的刪除操作叫做出棧。出資料也在棧頂
1.2棧的實現
棧的實現一般可以使用陣列或者鍊錶實現,相對而言陣列的結構實現更優一些。因為陣列在尾上插入資料的代價比較小
實現棧
#ifndef _stack_h_
#define _stack_h_
#include
"common.h"
#define seq_stack_default_size 8
typedef
struct seqstack
seqstack;
void
seqstackinit
(seqstack *pst)
;//棧的初始化
bool seqstackisfull
(seqstack *pst)
;//棧是否滿了
bool seqstackisempty
(seqstack *pst)
;// 棧是否為空
void
seqstackpush
(seqstack *pst, elemtype x)
;//入棧
void
seqstackpop
(seqstack *pst)
;// 出棧
elemtype seqstacktop
(seqstack *pst)
;// seqstackpeek();取棧頂元素
void
seqstackprint
(seqstack *pst)
;void
seqstackdestroy
(seqstack *pst)
;void
seqstackinit
(seqstack *pst)
// 棧的初始化
bool seqstackisfull
(seqstack *pst)
bool seqstackisempty
(seqstack *pst)
void
seqstackpush
(seqstack *pst, elemtype x)
// 入棧
pst->base[pst->top]
= x;
pst->top++;}
void
seqstackpop
(seqstack *pst)
//出棧
pst->top--;}
elemtype seqstacktop
(seqstack *pst)
// 取棧頂元素
else
}void
seqstackprint
(seqstack *pst)
}void
seqstackdestroy
(seqstack *pst)
#endif
/*_stack_h_*/
主函式`
#define _crt_secure_no_warnings 1
#include
"stack.h"
#include
"common.h"
void
main()
#ifndef _common_h_
#define _common_h_
#include
#include
#include
#define elemtype int
#endif
/*_common_h_*/
資料結構 棧的概念及實現
棧的概念及結構 棧 一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧中的資料元素遵守後進先出lifo last in first out 的原則。壓棧 棧的插入操作叫做進棧 壓棧 入棧,入資料在棧頂。出棧 棧的刪除操作叫做出棧。出...
資料結構 實現棧
include include include define node len sizeof node 1 pstack ptop pstack pbottom都指向節點 typedef struct node pnode,node typedef struct stack pstack,stack...
資料結構 棧實現
棧和佇列不一樣,棧是後進先出。實現時用了陣列儲存棧,陣列大小根據內容自動擴充。廢話不多說,上 c mystack.h pragma once templateclass mystack templateint mystack getcount templatet mystack top templa...