يتم عكس القائمتين المرتبطتين ، أي أن مؤشر الذيل لجدول السلسلة المرتبط الآخر يتم عكسه من الاندماج من مؤشر الذيل لقائمة واحدة مرتبطة بالقائمة المرتبطة الأخرى. أدناه ، يتم تقديم الفكرة والرمز التنفيذي للتناوب الانعكاس للقائمتين المرتبطتين بالتفصيل.
1. وصف المشكلة
الروابط A و B
ج: 1-> 2-> 3-> 4
ب: أ-> ب-> ج-> د
يرجى عكس القائمة المرتبطة بالتناوب.
4-> d-> 3-> c-> 2-> b-> 1-> a
تعريف نوع العقدة كما يلي:
ClassNode {العقدة العامة التالية ؛ 2. رمز المصدر:
يتم تمرير قوائم اثنين من A و B إلى القائمة المرتبطة بعد المعالجة:
العقدة العكسية (العقدة A ، B) {// A ، جميعها فقط عقدة واحدة ( .next ؛ ؛ ثلاثة ، تحليل:
ينقسم البرنامج إلى ثلاثة أجزاء -قبل دورة أثناء الدورة ، والدورة ، والدورة.
1) معالجة القائمة السابقة المرتبطة A و B
2) بينما يمكن تكرار جزء المعالجة الأساسية من عملية المعالجة هنا.
ومع ذلك ، فإن العقدة حيث توجد A في A. معالجتها خصيصًا فقط للعقدة التي توجد فيها A ، فإن عملية NOLL = NULL مطلوبة ، مما يعني أنه يجب تنفيذ الذرة الأولى في 1.
إذا كنت تستخدم الطريقة 2 ، فأنت بحاجة فقط إلى وضع إصبع واحد على الخروج من الدورة. لذلك ، يتم استخدام البنية الذرية الموصوفة في 2 هنا.
المعلومات المطلوبة بالهيكل الذري
عندما نذهب إلى دورة معينة ، على افتراض تشغيل الدائرة الزرقاء ، في هذا الوقت ، فإن حالة قائمتنا المرتبطة هي:
طريقة الرسم الأكثر بديهية هي:
أنها تتضمن 3 عقد -2،3 و C. الجزء الأحمر هو طريقة الارتباط التي نريد القيام بها. من أجل ربط C-> 2،3-> C ، يجب أن نعرف أن هناك مؤشرات مقابلة لتسجيل موقفها. لذلك ، قبل الدورة ، نحتاج إلى إتقان عنوان هذه العناصر الثلاثة ، وبعد المعالجة ، بنفس الطريقة ، الهيكل الذري الذي يجب معالجته بنفس الطريقة.
على سبيل المثال ، تسجل الطريقة التالية عنوان العقد الثلاث المصممة في هذه الدورة:
تمثل A و Na و B المؤشر أو الإشارة إلى العقد المقابلة.
بعد الانتهاء من المعالجة ، تحتاج إلى تسجيل العقد المتورطة في الهيكل الذري التالي بالطريقة نفسها ، وذلك لضمان تنفيذ الدورة وفقًا للمنطق الموحد.
عمليات المهمة هذه هي بالضبط ما يفعله هيئة الدورة. بالإضافة إلى ذلك ، يتم تعريف NextB على أنه متغير وسيط في الكود لتسجيل عنوان العقدة D السابقة قبل قطع اتصال C-> D ، لأن C إلى 2 سيفقد الاتصال D. هذا المتغير الوسيط ضروري.
3) قبل الحلقة بأكملها -حل المشكلة التي جلبتها العملية التحضيرية
لم نتعامل مع العقدة A ، لأنها خاصة جدًا ، ولا يوجد هيكل ذري مناسب يمكن أن يشملها. لذلك نضعها خارج الدورة والاستعداد للدورة الدموية.
بعد ذلك ، يمكننا وضع 1 و 2 و B في الدورة. هنا ، لا يوجد سوى عقدة واحدة A و B ، والتي تحتاج أيضًا إلى معالجتها بشكل منفصل.
4) بعد الحلقة بأكملها -المعالجة النهائية
عندما نجد أن القائمة المرتبطة B تصل إلى النهاية ، انتهت الدورة. ولكن في هذا الوقت ، هناك عقدة معالجة. سوف تتوقف دورتنا في هذا الهيكل الذري:
باعتبارها العملية النهائية ، نحتاج إلى معالجة خطوات الارتباط يدويًا لـ D-> 3،4-> D-This أيضًا ، لأنه يجب العثور على علاج البنية الذرية.
هذه ليست طريقة كاملة ، وهناك العديد من الأشياء التي لم تتم معالجتها. بالإضافة إلى ذلك ، لم يتم تعريف بنية بيانات العقدة تمامًا ، ولكن هذا ليس محور هذه المقالة.
من خلال التحليل التفصيلي أعلاه ، آمل أن أساعد الجميع على فهم أساليب وتنفيذ القائمة المرتبطة البديلة.