資料結構與演算法 佇列

2021-10-05 00:27:30 字數 1676 閱讀 3941

使用鍊錶實現佇列,兩個指標,乙個尾指標負責入隊,乙個頭指標負責出隊,比較簡單,**如下:

package com.freshbin.datastructandalgo.chapter06.mycode.queue;

/** * 鍊錶實現佇列

* @author freshbin

* @date 2020/4/14 17:32

*/public class queuebasedonlinkedlist

public void enqueue(string value)

tailnode.next = newnode;

tailnode = tailnode.next;

}public string dequeue()

string returndata = headnode.data;

headnode = headnode.next;

system.out.println("準備出隊的資料:" + returndata);

return returndata;

}public static void main(string arg)

public class node

public node(string value)

public string getdata()

public void setdata(string data)

public node getnext()

public void setnext(node next)

}}

使用陣列實現迴圈佇列,這裡主要是使用了乙個公式判斷是否隊滿(tail+1)%size=head,不過這會導致佇列有乙個空位不能使用,**如下:

package com.freshbin.datastructandalgo.chapter06.mycode.queue;

/** * 陣列實現迴圈佇列

* * 佇列滿的條件為:(tail+1)%size=head

* 佇列空的條件為:head=tail

* tail為當前尾結點索引,head為當前頭結點索引,size為佇列大小

* @author freshbin

* @date 2020/4/14 17:51

*/public class circularqueue

public circularqueue(int maxsize)

public void enquue(string value)

dataarray[tail] = value;

tail = (tail + 1) % size;

}public string dequeue()

string returnvalue = dataarray[head];

head = (head + 1) % size;

return returnvalue;

}public static void main(string arg)

system.out.println("出佇列元素:");

string dequeuedata = circularqueue.dequeue();

while (dequeuedata != null)

}}

資料結構與演算法 佇列

學習了好長 一段時間的資料結構,由於時間關係一直沒有寫部落格。這次打算將這段時間的學習內容寫下來做個整理。佇列作為線性結構的一種,其實用性不用多說。這裡總結下兩種結構的佇列實現。迴圈佇列 先列下以順序表結構形成的普通順序佇列存在的問題 隊頭不斷刪除元素,將使佇列的頭部空出單元 隨著刪除 插入的進行,...

資料結構與演算法 佇列

佇列 佇列與棧不同,它是一種先進先出的結構 實現 1 陣列 2 鍊錶 記錄的資料 1 隊首位置 第乙個元素的位置 2 隊尾位置 最後乙個元素的位置 3 佇列大小 size 佇列操作 entryqueue 入隊 exitqueue 出隊 isqueueempty 隊列為空 isqueuefull 佇列...

演算法與資料結構 佇列

adt queue d d 資料關係 r r a i d,i 2,3,n r 約定a 1a 1 a1 端為隊首,a na n an 端為隊尾。基本操作 create 建立乙個空佇列 emptyque 若隊列為空,則返回true,否則返回false insertque x 向隊尾插入元素x delet...