棧和佇列的概念 方法以及實現

2021-10-03 07:23:18 字數 1860 閱讀 2025

:一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧中的資料元素遵守後進先出lifo(last in first out)的原則。

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

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

棧的實現一般可以使用陣列或者鍊錶實現,相對而言陣列的結構實現更優一些。因為陣列在尾上插入資料的代價比較小。

解釋一下**search()**方法:

此方法根據object o在棧裡面從棧頂開始找,和o相同的物件,返回這個這個元素的下標和棧頂的距離。如果沒找到返回-1。

public

class

mystack

array = arrays.

copyof

(array,

2* array.length);}

//進棧

public

void

push

(int element)

//出棧

public

intpop()

//檢視棧頂元素,但不刪除

public

intpeek()

//判斷堆疊是否為空

public

boolean

empty()

//檢視堆疊元素的個數

public

intsize()

//返回乙個物件在堆疊上的基於1的位置

public

intsearch

(int element)

}return-1

;}}

佇列:只允許在一端進行插入資料操作,在另一端進行刪除資料操作的特殊線性表,佇列具有先進先出 fifo(first in first out)

入佇列:進行插入操作的一端稱為隊尾

出佇列:進行刪除操作的一端稱為隊頭

佇列也可以陣列和鍊錶的結構實現,使用鍊錶的結構實現更優一些,因為如果使用陣列的結構,出佇列在陣列頭上出資料,效率會比較低。

class

node

}public

class

myqueue

private node front = null;

private node rear = null;

private

int size =0;

//插入

public

void

add(

int element)

else

}//取出

public

intpoll()

return elememt;

}//檢視佇列頭元素

public

intpeek()

return front.value;

}//檢視佇列尾元素

public

intrear()

return rear.value;

}//佇列元素的個數

public

intsize()

//判斷佇列是否為null

public

boolean

isempty()

}

佇列實現棧以及棧實現佇列

232.用棧實現佇列 簡單 225.用佇列實現棧 簡單 佇列是一種先進先出的資料結構,棧是一種先進後出的資料結構,形象一點就是這樣 這兩種資料結構底層其實都是陣列或者鍊錶實現的,只是 api 限定了它們的特性,那麼今天就來看看如何使用 棧 的特性來實現乙個 佇列 如何用 佇列 實現乙個 棧 首先,佇...

棧和佇列的手動實現 用棧實現佇列 用佇列實現棧

1 用陣列結構實現大小固定的棧和佇列 1 棧 public static class arraystack arr new integer initsize size 0 public integer peek 返回棧頂元素但並不讓元素出棧 return arr size 1 public void...

棧和佇列的實現

include using namespace std typedef int selemtype typedef struct stack void create stack s void destroy stack s s.base s.top null s.maxnum 0 void clea...