動態棧的實現

2021-09-20 12:40:24 字數 893 閱讀 6445

棧的概念及結構

棧:一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一端

稱為棧頂,另一端稱為棧底。棧中的資料元素遵守後進先出lifo(last in first out)的原則。

壓棧:棧的插入操作叫做進棧/壓棧/入棧,入資料在棧頂。

出棧:棧的刪除操作叫做出棧。出資料也在棧頂。

#include#include#include#includetypedef int stdatatype;

typedef struct stack

stack;

//初始化棧

void stackinit(stack* ps)

//銷毀棧

void stackdestory(stack* ps)

//檢測棧是否為空,空->非0,非空->0

int stackempty(stack* ps)

else

}//入棧

void stackpush(stack* ps, stdatatype x)

else if (ps->_top + 1 == ps->_capacity)

else

}//出棧

void stackpop(stack* ps)

else

}//獲取棧頂元素

stdatatype stacktop(stack* ps)

else if(ps->_top==-1)

return ps->_a[ps->_top];

}//獲取棧頂元素有效個數

int stacksize(stack* ps)

return ps->_top + 1;

}

JAVA實現動態棧

在資料結構中,棧是一種極其實用的結構 所以,有必要將其掌握,棧的特點是 先入後出 只能從一端進,一端出。package stack 包名 inte ce stack class factory public static stack getlinkinstance class stackimpl i...

棧 棧的實現

棧是一種線性儲存結構,棧中資料是按照 先進後出 方式進出棧,向棧中新增 刪除資料時,只能從棧頂進行操作。include using namespace std template class t class arraystack 建構函式 template class t arraystack arr...

資料結構 順序棧的實現(動態版)

本部落格我們利用動態順序表實現棧。與靜態順序表的區別就是靈活性更高。我們動態順序棧存放的是自棧底到棧頂的資料元素,通過雙指標控制。通常的習慣做法是以top 0表示空棧,鑑於c語言中陣列下標約定從0開始,則當以c作為描述語言時,如此設定會帶來很大不便。另一方面,由於棧在使用過程中所需 大空間的大小很難...