Java資料結構與演算法 三 棧和佇列

2021-09-24 08:58:29 字數 2022 閱讀 9181

###1.棧 先進後出,後進先出

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

package com.fantj.datastruct.stack;

/** * 棧

* created by fant.j.

* 2017/12/21 10:20

*/public class mystack

/*** 帶引數的構造方法

*/public mystack(int maxsize)

/*** 新增資料

*/public void push(int value)

/*** 移除pop資料

*/public long pop

() /**

* 檢視資料

*/public long peek

() /**

* 判斷 是否是空

*/public boolean isempty

() /**

* 判斷 是否滿了

*/public boolean isfull()}

複製**

###2.佇列 先進先出

佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭

package com.fantj.datastruct.queue;

/** * 佇列(先進先出)

* created by fant.j.

* 2017/12/21 10:44

*/public class myqueue

/*** 帶引數的構造方法,引數為陣列大小

*/public myqueue(int maxsize)

/*** 新增資料,從隊尾插入

*/public void insert(long value)

/*** 刪除資料,從隊尾刪除

*/public long remove

() /**

* 檢視資料,從對頭檢視

*/public long peek

() /**

* 判斷是否為空

*/public boolean isempty

() /**

* 判斷是否滿了

*/public boolean isfull()}

複製**

但是普通佇列有個問題,就是你在進行一輪訪問資料操作後,因為end=arr.length-1;front = arr.lenth-1;所以,會報錯越界異常。因此我們會在插入刪除前加入判斷,讓這個佇列迴圈利用。 --迴圈佇列 ###2.佇列pro --迴圈佇列

為充分利用向量空間,克服"假溢位"現象的方法是:將向量空間想象為乙個首尾相接的圓環,並稱這種向量為迴圈向量。儲存在其中的佇列稱為迴圈佇列(circular queue)。這種迴圈佇列可以以單鏈表的方式來在實際程式設計應用中來實現。

修改兩處:insert和remove

/**

* 新增資料,從隊尾插入

*/public void insert(long value)

arr[++end] = value;

elements++;

}/**

* 刪除資料,從隊尾刪除

*/public long remove

() elements--;

return value;

}複製**

Java資料結構與演算法 三 棧和佇列

1.棧 先進後出,後進先出 棧 stack 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它...

Java資料結構與演算法 三 棧和佇列

1.棧 先進後出,後進先出 棧 stack 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它...

c 資料結構佇列棧屍體 資料結構與演算法 棧與佇列

使用抽象資料型別可以幫助我們更好的理解資料所需的操作,之後再進行具體的資料型別實現。實際上,往往是操作影響著我們決定資料型別該如何實現,這裡有兩種典型的資料結構 棧和佇列。1 棧首先,普通的線性表實現是有兩個埠可以訪問的,但是如果作為棧就要封閉一端,只能訪問另一端。這當然不是自討苦吃,棧是一種抽象資...