資料結構 簡說棧的概念結構及實現

2021-10-10 12:23:22 字數 2241 閱讀 5707

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...