資料結構之棧

2021-10-21 14:55:47 字數 1411 閱讀 7068

棧(stack)又稱堆疊,它是一種運算受限的線性表,其限制是僅允許在表的一端進行插入和刪除運算。人們把此端稱為棧頂,棧頂的第乙個元素被稱為棧頂元素,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱為進棧或入棧,它是把該元素放到棧頂元素的上面,使之成為新的棧頂元素;從乙個棧刪除元素又稱為出棧或退棧,它是把棧頂元素刪除掉,使其下面的相鄰元素成為新的棧頂元素。

由於棧的插入和刪除運算僅在棧頂一端進行,後進棧的元素必定先出棧,所以又把棧稱為後進先出表(last in first out, 簡稱lifo)。

棧既然是一種線性表,所以線性表的順序儲存和鏈結儲存結構同樣適用於棧。

棧的核心基本操作:

a)入棧:把元素放到棧裡頭;

b)出棧:把最後進來的元素給刪掉;

c)取棧頂元素:獲取到最後乙個進來的元素的結果。

1、順序儲存結構

順序表:使用尾插操作表示"入棧",使用尾刪操作表示"出棧",使用根據下標獲取元素的操作表示「取棧頂元素"。

package homework.stackandqueue;

public

class

mystack

//入棧

private

void

realloc()

}public

void

push

(int val)

data[size]

= val;

size++;}

//出棧

public integer pop()

int ret = data[size -1]

; size--

;return ret;

}//取棧頂元素

public integer peek()

return data[size -1]

;}}

2、鍊錶儲存結構

鍊錶:使用頭插操作表示"入棧",使用頭刪操作表示「出棧",直接取到頭結點,就是「取棧頂元素"。

package homework.stackandqueue;

class

node

}public

class

mystackwithnode

newnode.next = head;

head = newnode;

}//出棧

public

intpop

(int val)

if(head.next == null)

head = head.next;

return head.val;

}//取棧頂元素

public integer peek()

return head.val;

}}

資料結構之棧結構

棧結構是一種filo first in last out 的批量資料儲存結構。其特點是先進後出,後來者居上 棧的基本屬性 棧記憶體 棧頂標記 棧的當前元素個數 萬金油屬性 size 棧的基本操作 萬金油的的操作 根據實現的不同將棧結構分為兩種 1.鏈式棧 2.陣列 利用有表頭鍊錶的頭插法來完成棧的功...

資料結構之棧

4.8.2 四則運算表示式求值 程式如下所示 include include include 定義結點型別 typedef struct node node,pnode 定義棧的抽象資料型別 typedef struct stack stack,pstack 函式宣告 對棧進行初始化的函式 void...

資料結構之棧

資料結構之棧 本文討論棧的陣列實現。棧需要有如下幾個屬性 棧的容量 capacity 棧頂指標 儲存棧元素的陣列 根據這幾個屬性可以定義乙個棧結構體 struct stackrecord 然後定義棧的操作,一般可以包含如下幾個 棧的建立 stack createstack int size 棧的銷毀...