兩種實現棧的方式 利用鍊錶和陣列

2021-10-10 13:13:46 字數 2160 閱讀 8252

棧是一種常用的資料結構,其基本方式為先進後出

棧的實現方式一般為兩種:鍊錶和陣列,先來看一下用鍊錶實現的方式

**如下:

/**

* 利用鍊錶實現棧

* @author victor gong

* * @param 棧中元素的資料型別

*/public

class

linkedstack

}public

linkedstack()

/** *

* @return 棧的大小

*/public

intsize()

/** * 將元素放入棧中

* @param item 元素

*/public

void

push

(item item)

/** *

* @return 棧頂的元素

*/public item peek()

/** * 出棧

* 刪除並返回棧頂的元素

* @return 棧頂的元素

*/public item pop()

item x = first.item;

first = first.next;

return x;

}/**

* * @return 棧是否為空

*/public

boolean

isempty()

@override

public string tostring()

return s.

tostring()

;}public

static

void

main

(string[

] args)

}

棧的第二種實現方式為利用陣列,因為陣列必須先初始化定義大小,這樣顯得太過麻煩,因此我採取了動態調整陣列大小的方式,每當元素個數等於陣列大小時將陣列大小調整為原來的兩倍,每當元素個數為陣列大小的1/4時將陣列大小調整為原來的1/2.

具體實現**如下:

/**

* 利用陣列實現棧

* @author victor gong

* * @param 棧中元素的資料型別

*/public

class

arraystack

/*** 調整陣列大小

* @param size 陣列大小

*/@suppresswarnings

("unchecked"

)private

void

resize

(int size)

stack = a;

}/**

* * @return 棧的大小

*/public

intsize()

/** * 將元素入棧

* @param item 放入棧中的元素

*/public

void

push

(item item)

stack[n]

= item;

n++;}

/** *

* @return 棧頂元素

*/public item peek()

return stack[n-1]

;}/** * 刪除並返回棧頂元素

* @return 棧頂元素

*/public item pop()

if(n == stack.length /4)

item i = stack[n-1]

; stack[n-1]

= null;

n--;return i;

}/**

* * @return 棧是否為空

*/public

boolean

isempty()

@override

public string tostring()

return s.

tostring()

;}public

static

void

main

(string[

] args)

}

棧的兩種實現方式

一 陣列實現棧 首先需要定義乙個陣列來儲存棧中的資料,並定義乙個變數來記錄陣列中儲存元素的個數,編寫乙個構造方法來構造乙個長度為十得陣列。先頂i有乙個陣列來儲存棧中的元素 private object array 定義陣列中儲存元素的個數 private int size 構造後乙個長度與為10的陣...

兩種棧的實現 順序棧和鍊錶棧

棧 一 定義 棧是限定盡在一端插入或刪除操作的線性表。後進先出 lifo 二 習慣上稱棧的可訪問元素為站棧頂 top 元素,元素插入棧稱為入棧 push 刪除元素稱為出棧 pop 三 棧的adt template class stack 建構函式 virtual stack 析構函式 virtual...

棧的實現 鍊錶和陣列

c語言 列印函式採用的c 棧的鍊錶實現 棧的初始化 建立 清空 入棧 出棧 獲取棧頂元素 棧的陣列實現 初始化 入棧 出棧 清空棧 參考資料 資料結構與演算法分析 c語言描述 p46 stacklinklist.cpp cpp view plain copy 功能 棧的鍊錶實現 棧的初始化 建立 清...