資料結構 佇列,陣列實現 鍊錶實現和迴圈佇列

2021-08-28 23:41:38 字數 3256 閱讀 8406

一、什麼是佇列:

一種先進先出的資料結構(fifo結構)。新元素新增在隊尾(push),刪除操作刪掉第乙個元素(pop)

二、佇列的實現方式:

佇列的實現方式陣列實現、鍊錶實現

三、常見的佇列:

常用佇列迴圈佇列、阻塞佇列、併發佇列

四、怎麼實現乙個無bug的佇列思考

思考1:head(頭元素)和tail(尾元素)的初始值

思考2:佇列什麼情況算下算是滿了,(tail + 1) % capacity == head

思考3:佇列什麼情況下算是空的

思考4:特殊情況,陣列為空,陣列為1,陣列無限大等情況

能想清楚邊界問題和特殊情況就能更好的編寫**

五、陣列實現佇列

package com.sp.queue;

import com.alibaba.fastjson.json;

/** * 陣列實現佇列

* * @param */

public class arrayqueue

this.length = length;

queuearray = new object[length];

}/**

* 尾部新增元素,同時元素自動整理排序

** @param t

* @return

*/public boolean push(t t)

for (int i = head; i < tail; i++)

tail = tail - head;

head = 0;

}queuearray[tail++] = t;

return true;

}/**

* 頭部刪除元素

** @return

*/public boolean pop()

queuearray[head] = null;

head++;

return true;

}@override

public string tostring()

public static void main(string args)

/*//測試 無重新排序的 佇列

public static void main(string args) */

}

六、 鍊錶實現的佇列

鍊錶不需要初始化長度,新增和刪除方便

package com.sp.queue;

import com.alibaba.fastjson.json;

/** * 鍊錶實現的佇列

* * @param */

public class circularqueue

this.length = length;

queuearray = new object[length];

}public boolean push(t t)

queuearray[tail % length] = t;

tail = (tail + 1) % length;

return true;

}public boolean pop()

queuearray[head] = null;

head = (head + 1) % length;

return true;

}@override

public string tostring()

public static void main(string args)

}

七、使用陣列實現迴圈佇列

迴圈佇列就不需要整理陣列的空值了,如同乙個環形新增

public class mycircularqueue 

/*** insert an element into the circular queue. return true if the operation is successful.

*/public boolean enqueue(int value)

if (isfull())

queue[tail = (tail + 1) % capacity] = value;

system.out.println("新增成功 true head = " + head + ", tail = " + tail + ", queue:" + json.tojsonstring(queue));

return true;

}/**

* delete an element from the circular queue. return true if the operation is successful.

*/public boolean dequeue()

queue[head] = null;

head = (head + 1) % capacity;

if (isempty())

system.out.println("刪除成功 true head = " + head + ", tail = " + tail + ", queue:" + json.tojsonstring(queue));

return true;

}/**

* get the front item from the queue.

*/public int front()

/*** get the last item from the queue.

*/public int rear()

/*** checks whether the circular queue is empty or not.

*/public boolean isempty()

/*** checks whether the circular queue is full or not.

*/public boolean isfull()

public static void main(string args)

// public static void main(string args)

// public static void main(string args)

}

資料結構 佇列的實現 陣列 鍊錶

一種先進先出的資料結構 基本操作 實現 以陣列實現 public class arrayqueue public arrayqueue int size 入隊 public boolean inqueue int num this head 1 重置隊頭 this tail this count 1...

《資料結構和演算法 鍊錶實現佇列》

寫出先入先出佇列的結構體queue定義,並實現以下函式 15分 1,queue create int size 建立乙個能放size個int型別的佇列,返回佇列的指標。2,int put queue queue,int value 將value入隊,返回0表示成功,1表示出錯。3,int get q...

動手實現資料結構 陣列 鍊錶 佇列 雜湊表

最近各種筆試 面試 歸結起來,打鐵還需自身硬,想攬瓷器活,就得有金剛鑽。任何各種投機取巧 僥倖心理都是沒意義的。出來混,欠的總是要還的!在學習上,必須死磕到底。實現陣列擴容 插入 刪除 輸出的功能。public class myarray 陣列插入元素 param element 插入的元素 par...