棧(stack)
只允許在一端進行插入或刪除操作的線性表
棧頂(top):棧中允許進行插入和刪除操作的那一端;
棧底(bottom):固定的,不允許進行插入或刪除的另一端
1.棧是受限的線性表,所以自然具有線性關係。
2.棧中元素後進先出。
棧的順序儲存==順序棧
#define maxsize 50 //定義棧中元素的最大個數
typedef
struct
sqstack; //
順序棧簡寫
1.top的值不能超過maxsize;
2.空棧的判定條件通常為top==-1,滿棧的判定條件為top=maxsize-1,棧中元素個數為top+1.
順序棧的操作:
1.判空
boolstackempty(sqstack s)
2.進棧
bool push(sqstack &s,elemtype x)
3.出棧
bool pop(sqstack &s,elemtype &x)
4.讀取棧頂元素
bool gettop(sqstack s,elemtype &x)
共享棧順序棧的儲存空間大小需要事先開闢好,對每個棧各自單獨開闢儲存空間的利用率不如將各個棧儲存空間共享。
棧滿條件下:指標top1與指標top2只相差1,即top1+1=top2.
結構:
#define maxsize 100 //定義棧中元素的最大個數
typedef
struct
sqdoublestack;
//順序共享棧簡寫
進棧:
bool push(sqdoublestack &s,elemtype x,intstacknum0
棧的鏈式儲存==鏈棧
頭指標當作棧頂指標,棧頂存放在單鏈表頭部。
typedef structsnodesnode *slink //
鏈棧的結點
typedef
struct
linkstacklinkstack //
鏈棧
1.鏈棧一般不存在滿棧
2.空棧的判定關係一般為top=null
進棧
bool push(linkstack &s,elemtype x)
出棧
bool pop(linkstack &s, elemtype &x)
資料結構學習心得(一)
計算機現在不在侷限於數字計算,更多應用於控制,管理及資料處理等非數值計算領域。這裡面涉及到兩個問題 資訊的表示,資訊的處理。分析待處理問題中的物件的特徵及個物件之間存在的關係,這既是資料結構這門課索要研究的問題。編寫解決實際問題的程式的一般過程 如何用資料形式描述問題?即由問題抽象出乙個適當的數學模...
資料結構學習心得總結
學習完成後,受益良多,也非常喜悅,非常開心,好像終於打了一場勝仗一樣!我打算將這乙個月的學習心得做乙個彙總,記錄下來。希望能給初學者帶來信心和經驗,能給大家分享這份快樂 剛開始打算學資料結構,是因為找工作面試的時候,很多公司都要求對資料結構有了解。沒辦法,我只有硬著頭皮學了。但是我沒有任何學習思路,...
c語言資料結構學習心得 線性表
線性表 具有相同資料型別的n n 0 個資料元素的有限序列。主要有順序儲存和鏈式儲存。順序儲存 特點 位址連續,隨機 訪問,順序儲存。方式 靜態和動態。優點 儲存密度大 隨機儲存 快速訪問表中任一位置元素。缺點 插入刪除移動大量元素 對儲存空間要求高,會產生儲存空間的碎片。1.插入 bool lis...