棧與佇列簡介

2021-10-09 20:35:30 字數 2463 閱讀 6083

棧與佇列和陣列、鍊錶、樹這幾種資料結構不太一樣。棧與佇列主要是做為程式設計師的工具來使用,它們主要做為構思演算法的輔助工具,而不是完全的資料儲存工具。

它們的生命週期比陣列那些要短得多,在程式執行期間它們才會被建立,任務執行完就會被銷毀。

棧是一種只能在一端進行插入和刪除資料的資料結構,這一端被稱為棧頂(top)。其特點簡單來講就是先進後出。棧的主要機制可以用陣列來實現,當然也可以用鍊錶來實現。

用陣列實現棧,並完成常用操作——出棧、入棧、檢視元素(只能檢視棧頂元素)、判斷棧是否為空等操作。

public

class

stacktest

public

stacktest

(int maxsize)

/** * 新增資料

* @param value

*/public

void

push

(int value)

/** * 移除資料

* @return

*/public

long

pop(

)/**

* 檢視資料

* @return

*/public

long

peek()

public

boolean

isempty()

/***

* 判斷是否滿了

* @return

*/public

boolean

isfull()

}

棧的所有操作複雜度都為o(1),棧的操作不依賴棧中元素大小,棧不需要移動和比較操作。

佇列的特點是先進先出。佇列也是用陣列來實現。

用陣列實現佇列,並完成常用操作——出隊、入隊、檢視元素、判斷佇列是否為空等操作。

public

class

queuetest

public

queuetest

(int maxsize)

/** * 插入資料

* @param value

*/public

void

insert

(long value)

/** * 刪除資料

* @return

*/public

long

remove()

/** * 檢視資料,從對頭檢視

* @return

*/public

long

peek()

/** * 判斷是否為空

* @return

*/public

boolean

isempty()

public

boolean

isfull()

}

佇列的插入、刪除等操作的複雜度都為o(1)。

優先順序佇列和普通佇列一樣,也是乙個隊頭,乙個隊尾,從隊頭移除元素,優先順序佇列中,資料項是有序的,這樣插入資料的時候就會根據某種規則去比較,然後插入到佇列合適的位置。因此,優先順序佇列插入的複雜度為o(n),刪除和檢視元素的複雜度為o(1)。

用陣列實現優先順序佇列,並完成常用操作——出隊、入隊、檢視元素、判斷佇列是否為空等操作。

public

class

firstqueuetest

public

firstqueuetest

(int maxsize)

/** * 插入資料

* @param value

*/public

void

inser

(long value)

else

else

} elements++

; end++;}

}/**

* 刪除資料

* @return

*/public

long

remove()

/** * 檢視資料,從對頭檢視

* @return

*/public

long

peek()

/** * 判斷是否為空

* @return

*/public

boolean

isempty()

public

boolean

isfull()

}

棧的特點是先進後出,棧只能檢視棧頂的乙個元素

佇列的特點是先進先出,只能檢視隊頭的乙個元素

優先順序佇列插入一條元素,平均需要移動2/n個元素,因此插入的複雜度為o(n)

棧和佇列,可以用陣列實現,也可以用其他資料結構實現

棧和佇列是為了完成某些工作,手動構造的資料結構

判斷棧是否為空 棧與佇列簡介

棧與佇列和陣列 鍊錶 樹這幾種資料結構不太一樣。棧與佇列主要是做為程式設計師的工具來使用,它們主要做為構思演算法的輔助工具,而不是完全的資料儲存工具。它們的生命週期比陣列那些要短得多,在程式執行期間它們才會被建立,任務執行完就會被銷毀。棧是一種只能在一端進行插入和刪除資料的資料結構,這一端被稱為棧頂...

棧與佇列 建立棧 佇列

陣列棧 完成stack createstack int maxelements 函式,該函式建立乙個棧,maxelements為與分配的棧空間大小 棧可用空間為array 0,maxelements 1 typedef int elemtype struct stackrecord typedef ...

棧 佇列與優先佇列

123 45 include stack int s 入棧 push 出棧 pop 取棧頂top 123 45 include queue int s 入隊 push 出隊 pop 取隊首元素 front 不刪除 123 4priority queue int pq 入隊 push 出隊 pop 取...