棧:先進後出的線性表;
棧也可以通過順序儲存和鏈式儲存的方式實現;
一、順序儲存實現
陣列的尾端作為棧頂;
**實現:
package org.xiazdong.list;
public class myarraystack
public void push(t e)
top++;
if(top>=t.length)
t[top]=e;
} public t top()
public t pop()
t tmp = t[top];
top--;
return tmp;
} public int getsize()
private void larger(int len)
public t pop()
t elem = top.elem;
top = top.next;
return elem; }
public t top()
public void push(t e)
class node
public node(t elem,node next)
}}
三、比較
順序儲存
鏈式儲存
優點訪問快、增加刪除都為o(1)
增加刪除都為o(1),對於空間沒有限制
缺點浪費空間,容易溢位
指標需要空間
四、棧的應用
1.遞迴
我們這裡以斐波那契數為例;fib(n) = fib(n-1)+fib(n-2),fib(2) = fib(1) = 1;
遞迴和棧是密不可分的,遞迴的實現就是通過棧來完成的;
2.字尾表示式
我們在做計算器應用時肯定會用到字尾表示式,中綴表示式轉換到字尾表示式,字尾表示式求出值都是通過棧實現的;
資料結構複習之 棧
棧 先進後出的線性表 棧也可以通過順序儲存和鏈式儲存的方式實現 陣列的尾端作為棧頂 實現 package org.xiazdong.list public class myarraystack public void push t e top if top t.length t top e publ...
資料結構複習 棧
棧,也是一種表結構,特點是先進後出。實現方式也有兩種 陣列和鍊錶。本文主要是複習,老鳥跳過!具體主要包括以下操作 stack createstack void int isempty stack s int isfull stack s 鏈式stack可以不斷申請space void makeemp...
複習 資料結構 棧和佇列
鏈佇列 include include define elemtype char define maxsize 100 typedef struct node 定義節點型別 snode typedef struct lqueue void initqueue lqueue qu void enque...