###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 棧首先,普通的線性表實現是有兩個埠可以訪問的,但是如果作為棧就要封閉一端,只能訪問另一端。這當然不是自討苦吃,棧是一種抽象資...