هذه المدونة بسيطة نسبيا. انظر فقط إلى الترتيب العكسي للقوائم المرتبطة المفردة إذا كنت لا تفهم.
فكرة الترتيب العكسي
افترض الآن أن هناك قائمة مرتبطة ، والتي سيتم تشغيلها بترتيب عكسي. أول شيء نفكر فيه هو عكس علاقة المؤشر.
في الواقع ، هذا كل شيء. المدون عبارة عن عملية عكسية قائمة واحدة مرتبطة بهذا الهدف.
العقدة pre = null ؛ node post = null ؛ بينما (الرأس! = null) {post = head.next ؛ head.next = pre ؛ قبل = الرأس ؛ الرأس = post ؛}هذا هو جوهر الترتيب العكسي. دعنا نوضح خطوة بخطوة.
في البداية ، تم تعيين ما قبل و post على فارغ. يعد هذا ضروريًا لأنه بعد خط تنفيذ الكود من Head.next = pre ، سيصبح الجزء التالي من عقدة الرأس الأصلية لاغية ، أي فارغة قائمتنا المرتبطة بأكملها.
تخيل أن التالي في نهاية قائمة الارتباطات الأصلية هو أيضًا فارغ؟ الحقيقة هنا هي نفسها.
في هذا الوقت ، يتم تحديث Pre to the Head Head الأصلي أيضًا للتحضير للخطوة التالية من الترتيب العكسي ، ويصبح الرأس بشكل طبيعي الرأس الأصلي.
آسف ، ارتجفت يدي ورسمت خطأ. شكرا لكم الجميع. تشير المرة الخامسة على الرسم البياني المرسومة باليد إلى أن العقدة المسبقة يجب أن تكون في موضع العقدة 5 وليس هناك رأس.
ليس من الصعب أن نرى من الأسطورة أن نقوم بنقل الرأس للخلف مرارًا وتكرارًا ، ونقوم بتحديث العقدة المسبقة في نفس الوقت لتحقيق تأثير الترتيب العكسي.
شفرة
قائمة الحزمة ؛ عكس الفئة العامة {public static void main (string [] args) {node head = new node (1) ؛ int [] value = {2،3،4،5} ؛ node temp = head ؛ for (int i = 0 ؛ i <value.length ؛ i ++) {node node = new node (value [i] temp.next ؛} printlist (head) ؛ // عكسي ترتيب الإخراج رأس قائمة مرتبطة واحدة = عكس (الرأس) ؛ printlist (head) ؛ // عكس الرأس مرة أخرى = reverseSingLelist (head) ؛ printlist (head) ؛} print print print static static (head) head.next ؛} system.out.println () ؛} عكس العقدة الثابتة العامة (رأس العقدة) {node pre = null ؛ node post = null ؛ بينما (head! = null) {post = head.next ؛ head.next = pre = head ؛ head = post ؛ null ؛ بينما (head! = null) {next = head.next ؛ head.next = pre ؛ pre = head ؛ head = ext ؛امتحان
بعد الاختبار ، يكون إخراج الكود صحيحًا.
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
للمساعدة في الفهم ، إليك مثال آخر:
/** * تنفذ Java ترتيب عكسي للقوائم المرتبطة المفردة * Author Administrator * */public class SingleLinkedReverse {class node {int data ؛ node next ؛ public node (int data) {this.data = data ؛}} slr.new Node (0) ؛ for (int i = 1 ؛ i <10 ؛ i ++) {node p = slr.new node (i) ؛ tail.next = p ؛ tail = p ؛} tail = head ؛ بينما (tail! = null) {system.out.print بينما (head! = null) {system.out.print (head.data+"" ") ؛ head = head.next ؛}} عكس العقدة الثابتة الخاصة (رأس العقدة) {node p1 ، p2 = null ؛ p1 = p1 ؛ p2 ؛}}نتائج الاختبار:
0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0
لخص
ما سبق هو المحتوى الكامل لهذه المقالة حول مثال رمز استخدام الترتيب العكسي لقوائم Java المفردة المرتبطة. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!