Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์รายการเชื่อมโยงที่ไม่เปลี่ยนรูปแบบย้อนกลับใน C ++


สมมติว่าเรามีรายการเชื่อมโยงที่ไม่เปลี่ยนรูปแบบ เราต้องพิมพ์ค่าทั้งหมดของแต่ละโหนดโดยย้อนกลับโดยใช้อินเทอร์เฟซต่อไปนี้ -

  • 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]