สมมติว่าเรามีรายการเชื่อมโยงที่ไม่เปลี่ยนรูปแบบ เราต้องพิมพ์ค่าทั้งหมดของแต่ละโหนดโดยย้อนกลับโดยใช้อินเทอร์เฟซต่อไปนี้ -
-
ImmutableListNode - นี่คืออินเทอร์เฟซของรายการที่เชื่อมโยงที่ไม่เปลี่ยนรูปแบบ เราได้รับส่วนหัวของรายการ
เราต้องใช้ฟังก์ชันต่อไปนี้เพื่อเข้าถึงรายการที่เชื่อมโยง -
-
ImmutableListNode.printValue() - สิ่งนี้จะพิมพ์ค่าของโหนดปัจจุบัน
-
ImmutableListNode.getNext() −สิ่งนี้จะคืนค่าโหนดถัดไป
ดังนั้นหากรายการมีลักษณะดังนี้:[0, -4, -1, 3, -5] ผลลัพธ์จะเป็น [-5, 3, -1, -4, 0]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนด stack st สำหรับโหนดประเภท ImmutableListNode
-
ในขณะที่หัวไม่เป็นโมฆะ
-
ใส่หัวเข้าไปใน st
-
head :=ข้างหัว
-
-
ในขณะที่ st ไม่ว่างเปล่า
-
พิมพ์ค่าของโหนดบนสุดของสแต็ก
-
ลบโหนดออกจากสแต็ก
-
ตัวอย่าง (C++)
ให้เราดูการใช้งานต่อไปนี้เพื่อทำความเข้าใจ −
class Solution { public: void printLinkedListInReverse(ImmutableListNode* head) { stack <ImmutableListNode*> st; while(head){ st.push(head); head = head->getNext(); } while(!st.empty()){ st.top()->printValue(); st.pop(); } } };
อินพุต
[0,-4,-1,3,-5]
ผลลัพธ์
[-5,3,-1,-4,0]