خوارزميةمجاني

عكس قائمة مترابطة

اقلب كل مؤشّر next في مكانه باستخدام ثلاثة مؤشّرات: prev و curr و nxt.

الزمن
O(n)
الذاكرة
O(1)

تتبّعها خطوة بخطوة

الخطوة 1 من 14
1function reverse(head) {2  let prev = null, curr = head;3  while (curr !== null) {4    const nxt = curr.next;5    curr.next = prev;6    prev = curr;7    curr = nxt;8  }9  return prev;10}
  1. nullprev
  2. 1curr
  3. 2
  4. 3
  5. 4
  6. null

يبدأ prev من null، ويبدأ curr من الرأس، 1.

كيف تعمل

امشِ على القائمة مرة واحدة. عند كل عقدة احفظ أولاً العقدة التالية، ثم اجعلها تشير إلى العقدة السابقة، ثم قدّم المؤشّرين. عندما يتجاوز curr نهاية القائمة يكون prev هو الرأس الجديد. الزمن O(n) والذاكرة الإضافية O(1).