تم حذف قائمة قائمة انتظار قائمة الانتظار المتسلسلة ثنائية الاتجاه وقائمة انتظار سلسلة ثنائية الاتجاه ، JDK ، هنا. يتضمن Arraydeque مكدسًا متسلسلًا وقائمة انتظار متتابعة ، بينما يحتوي LinkedList على مكدس السلسلة وقائمة انتظار السلسلة. كل من Arraydeque و LinkedList هما مؤشر ترابط. قائمة انتظار الأولوية الأولوية هي أيضا في JDK.
1. تنفيذ قوائم الانتظار المتسلسلة
package lang ؛ import java.io.serializable ؛ استيراد java.util.arrays ؛/** * classname: arrayqueue * description: قائمة انتظار متسلسلة * @date 20 يناير 2014 في 3:46:19 pm * param <t>///public class arrayqueue <t> serializable {/** SerialVersionuid Long = 7333344126529379197L ؛ private int default_size = 10 ؛ سعة int الخاصة ؛ // حفظ طول الكائن الخاص الصفيف [] ElementData ؛ // تحديد صفيف لحفظ عناصر قائمة الانتظار المتسلسلة Private Int Front = 0 ؛ // Fleet Head Private Int = 0 ؛ // Terminal Team // إنشاء قائمة انتظار متسلسلة فارغة Arrayqueue () {cumper_size ؛ elementData = كائن جديد [السعة] ؛ } // إنشاء قائمة انتظار متسلسلة ArrayQueue (te element) {this () ؛ elementData [0] = element ؛ الخلفية ++ ؛ } Arrayqueue (int initsize) {elementData = كائن جديد [initsize] ؛ } / *** قم بإنشاء قائمة انتظار طلب مع مجموعة من الطول المحدد* param العنصر حدد العنصر الأول في قائمة انتظار الطلب* param initsize حدد طول الصفيف الأساسي من قائمة انتظار الطلب* / Arrayqueue العامة (العنصر t ، int) {this.capacity = initsizize ؛ elementData = كائن جديد [السعة] ؛ elementData [0] = element ؛ الخلفية ++ ؛ } / ** * title: size * description: احصل على حجم قائمة الانتظار المتسلسلة * regurn * / public int size () {return rear - front ؛ } / ** * title: عرض * description: enqueue * param element * / public void عرض (عنصر t) {insureCapacity (الخلفية + 1) ؛ elementData [REAL ++] = element ؛ } private void insureCapacity (int mincapacity) {// إذا كان الطول الأصلي للمصفوفة أقل من الطول الحالي int endcapacity = elementData.Length ؛ if (mincapacity> oldcapacity) {int newCapacity = (OldCapacity * 3) / 2 + 1 ؛ إذا (NewCapacity <mincapacity) NewCapacity = mincapacity ؛ // عادة ما تكون Mincapacity قريبة من الحجم ، لذلك هذا هو الفوز: elementData = Arrays.copyof (ElementData ، NewCapacity) ؛ }} / ** * title: استطلاع * description: dequeue * regurn * / public t poll () {if (isempty ()) {رمي indexoutofboundsexception ("استثناء قائمة الانتظار الفارغة") ؛ }. // احرص على العنصر على الطرف الأمامي من elementData في قائمة الانتظار [Front ++] = null ؛ إرجاع Oldvalue ؛ } / ** * title: peek * description: إرجاع العنصر العلوي من قائمة الانتظار ، ولكن لا يحذف العنصر العلوي من قائمة الانتظار * @return * / public t peek () {if (isEmpty ()) {رمي indexoutofboundsexception ("استثناء قائمة الانتظار الفارغة") ؛ } return (t) elementData [front] ؛ } / ** * title: isEmpty * description: تحديد ما إذا كانت قائمة انتظار الطلب عبارة عن قائمة انتظار فارغة * regurn * / public boolean isEmpty () {return rear == front ؛ } / *** title: clear* description: قم بمسح قائمة انتظار الطلب* / public void clear () {// تعيين جميع عناصر الصفيف الأساسي إلى المصفوفات الخالية. الجبهة = 0 ؛ الخلفية = 0 ؛ } السلسلة العامة toString () {if (isempty ()) {return "[]" ؛ } آخر {stringBuilder sb = new StringBuilder ("[[") ؛ من أجل (int i = front ؛ i <re rear ؛ i ++) {sb.append (elementData [i] .toString ()+"،") ؛ } int len = sb.length () ؛ return sb.delete (len - 2 ، len) .Append ("]"). ToString () ؛ }}}2. تنفيذ قوائم انتظار السلسلة
package lang ؛ import java.io.serializable ؛/** * @classname: linkqueue * description: سلسلة قائمة انتظار * date 21 يناير 2014 في 3:24:38 pm * param <t> */public class linkqueue <t> serializable {/** ** * @fields serialover -6726728595616312615L ؛ // تحديد عقدة فئة داخلية ، ويمثل مثيل العقدة عقدة قائمة انتظار السلسلة. عقدة الفئة الخاصة {private t data ؛ // احفظ بيانات العقدة الخاصة العقدة التالية ؛ // المرجع إلى العقدة التالية // مُنشئ بدون معلمات node () {} // مُنشئ لتهيئة جميع السمات العامة (بيانات t ، العقدة التالية) {this.data = data ؛ data ؛ this.next = التالي ؛ }} الأمامي الخاص بالعقدة الخاصة ؛ // احفظ عقدة الرأس لقائمة انتظار السلسلة الخلفية الخاصة ؛ // احفظ عقدة الذيل لقائمة انتظار السلسلة الخاصة بحجم int ؛ // حفظ عدد العقد المضمنة بالفعل في قائمة انتظار السلسلة/** * <p> العنوان: inckqueue </p> * <p> الوصف: إنشاء قائمة انتظار سلسلة فارغة </p>/public inlinkue () الخلفية = فارغة ؛ }/** * <p> العنوان: linkqueue </p> * <p> الوصف: قم بإنشاء قائمة انتظار سلسلة عن طريق تحديد عناصر البيانات ، والتي لها عنصر واحد فقط في قائمة انتظار السلسلة </p> */public linkqueue (te element) {front = new node (element ، null) ؛ // فقط عقدة واحدة ، نقطة أمامية وخلفية إلى الجزء الخلفي للعقدة = الأمامي ؛ حجم ++ ؛ } / ** * title: size * description: احصل على حجم قائمة الانتظار المتسلسلة * regurn * / public int size () {size return ؛ } /** * title: عرض * description: enqueue * element element * /public void عرض (عنصر t) {// إذا كانت قائمة انتظار السلسلة لا تزال قائمة انتظار سلسلة فارغة إذا (front == null) {front = new node (element ، null) ؛ الخلفية = الأمامية ؛ // لا يوجد سوى عقدة واحدة ، نقطة أمامية وخلفية إلى العقدة} {node newnode = new node (العنصر ، null) ؛ // قم بإنشاء node.next = newNode ؛ // اسمحوا لـ the to the the the the to the the to the the to the the to to the the to the the to the the to the the to the the to the the to the the to the the to the the to the the the the the the to to the the the the the the the the the the node node to the newnode ؛ } / ** * title: استطلاع * description: dequeue * return * / public t poll () {node oldfront = front ؛ الجبهة = Front.next ؛ Oldfront.next = null ؛ مقاس--؛ إرجاع Oldfront.data ؛ } / ** * title: peek * description: إرجاع العنصر العلوي من قائمة الانتظار ، ولكن لا تحذف العنصر العلوي من قائمة الانتظار * regurn * / public t peek () {return re re re re rept.data ؛ } / ** * title: isEmpty * description: تحديد ما إذا كانت قائمة انتظار الطلب عبارة عن قائمة انتظار فارغة * regurn * / public boolean isempty () {return size == 0 ؛ } / *** title: clear* description: قم بمسح قائمة انتظار الطلب* / public void clear () {// تعيين العقد الأمامية والخلفية كـ Freth Front = null ؛ الخلفية = فارغة ؛ الحجم = 0 ؛ } السلسلة العامة toString () {// عندما تكون قائمة انتظار السلسلة عبارة عن قائمة انتظار سلسلة فارغة إذا (isEmpty ()) {return "[]" ؛ } آخر {stringBuilder sb = new StringBuilder ("[[") ؛ لـ (node current = front ؛ current! = null ؛ current = current.next) {sb.append (current.data.toString () + "،") ؛ } int len = sb.length () ؛ return sb.delete (len - 2 ، len) .Append ("]"). ToString () ؛ }} public static void main (string [] args) {linkqueue <string> queue = new linkqueue <string> ("AAAA") ؛ // إضافة عنصرين queue.offer ("BBBB") ؛ Queue.Offer ("CCCC") ؛ System.out.println (قائمة الانتظار) ؛ // croute queue.poll () بعد حذف عنصر ؛ system.out.println ("حذف قائمة الانتظار بعد عنصر:" + قائمة انتظار) ؛ // إضافة عنصر Queue.offer مرة أخرى ("dddd") ؛ System.out.println ("أضف قائمة الانتظار بعد عنصر مرة أخرى:" + قائمة الانتظار) ؛ // إضافة عنصر مرة أخرى queue.poll () ؛ // إضافة عنصر Queue.offer مرة أخرى ("eeeee") ؛ System.out.println (قائمة الانتظار) ؛ }}3. تنفيذ قوائم الانتظار الدائرية
package lang ؛ import java.io.serializable ؛ استيراد java.util.arrays ؛/** * classname: loopqueue * description: loopqueue * @date 20 ، 2014 at 3:47:14 pm */public class loopqueue <t> serializable {/** -3670496550272478781L ؛ private int default_size = 10 ؛ سعة int الخاصة ؛ // حفظ طول المصفوفة الكائن الخاص [] elementData ؛ // تحديد صفيف لحفظ عناصر قائمة انتظار حلقة Private Int Front = 0 ؛ // head head private int int = 0 ؛ elementData = كائن جديد [السعة] ؛ } // قم بإنشاء قائمة انتظار حلقة مع عنصر تهيئة عامة (عنصر t) {this () ؛ elementData [0] = element ؛ الخلفية ++ ؛ } / *** قم بإنشاء قائمة انتظار حلقة مع صفيف بطول محدد* @param حدد العنصر الأول في قائمة انتظار الحلقة* param initsize حدد طول الصفيف الأساسي من قائمة انتظار الحلقة* / public loopqueue (te element ، int) {this.capoucity = elementData = كائن جديد [السعة] ؛ elementData [0] = element ؛ الخلفية ++ ؛ } // احصل على حجم قائمة انتظار Loop Public int () {if (isEmpty ()) {return 0 ؛ } العودة الخلفية> الأمامية؟ الخلفية - الجبهة: السعة - (الأمامية - الخلفية) ؛ }. } elementData [rear ++] = element ؛ // إذا كان الجزء الخلفي قد وصل إلى النهاية ، فقم بتشغيل الرأس إلى الوراء = الظهر == السعة؟ 0: الخلفية ؛ }. }. // احرص على العنصر على الطرف الخلفي من elementData قائمة الانتظار [Front ++] = null ؛ // إذا وصلت الأمام إلى النهاية ، فأدرس الأمام == السعة؟ 0: الجبهة ؛ إرجاع Oldvalue ؛ } // إرجاع العنصر العلوي من قائمة الانتظار ، ولكن لا تحذف العنصر العلوي من element t element public () {if (isempty ()) {رمي indexoutofboundsexception ("استثناء قائمة الانتظار الفارغة") ؛ } return (t) elementData [front] ؛ } // حدد ما إذا كانت قائمة انتظار الحلقة عبارة عن قائمة انتظار قائمة بملاء بولان عام isempty () {// الخلفي == الأمامي والعنصر في الخلف هو عودة خلف فارغة == Front && elementData [REAC] == NULL ؛ }. الجبهة = 0 ؛ الخلفية = 0 ؛ } السلسلة العامة toString () {if (isempty ()) {return "[]" ؛ } آخر {// إذا كان الأمامي <الخلفي ، العنصر الصحيح هو العنصر بين الأمام والخلف إذا (الأمامي <الخلفي) {stringBuilder sb = new StringBuilder ("[") ؛ من أجل (int i = front ؛ i <re rear ؛ i ++) {sb.append (elementData [i] .toString ()+"،") ؛ } int len = sb.length () ؛ return sb.delete (len - 2 ، len) .Append ("]"). ToString () ؛ } // إذا كانت الأمام> = الخلفية ، فإن العنصر الصحيح هو آخر بين السعة الأمامية و 0-> Front {StringBuilder sb = new StringBuilder ("[") ؛ لـ (int i = front ؛ i <cappy ؛ i ++) {sb.append (elementData [i] .toString ()+"،") ؛ } لـ (int i = 0 ؛ i <re rear ؛ i ++) {sb.append (elementData [i] .toString ()+"،") ؛ } int len = sb.length () ؛ return sb.delete (len - 2 ، len) .Append ("]"). ToString () ؛ }}} الفراغ الثابت العام (سلسلة [] args) {loopqueue <string> Queue = new loopqueue <string> ("AAAA" ، 3) ؛ // إضافة عنصرين queue.add ("BBBB") ؛ Queue.Add ("CCCC") ؛ // في هذا الوقت ، فإن قائمة الانتظار هي system.out.println (قائمة الانتظار) ؛ // بعد حذف عنصر ما ، يمكن لقائمة الانتظار إضافة قائمة انتظار عنصر أخرى. Remove () ؛ System.out.println ("قائمة الانتظار بعد حذف عنصر:" + قائمة انتظار) ؛ // أضف عنصرًا مرة أخرى ، وقائمة الانتظار ممتلئة مرة أخرى قائمة الانتظار ("dddd") ؛ System.out.println (قائمة الانتظار) ؛ System.out.println (قائمة الانتظار) ؛ System.out.println (قائمة الانتظار) ؛ // بعد حذف عنصر ما ، يمكن لقائمة الانتظار إضافة قائمة انتظار عنصر أخرى. Remove () ؛ // أضف عنصرًا مرة أخرى ، وقائمة الانتظار ممتلئة مرة أخرى قائمة الانتظار ("eeeee") ؛ System.out.println (قائمة الانتظار) ؛ }}طريقة تنفيذ قائمة انتظار Java أعلاه (قائمة انتظار متتابعة ، قائمة انتظار السلسلة ، قائمة انتظار الحلقة) هي كل المحتوى الذي شاركته معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.