ลิงก์ลิสต์จัดสรรหน่วยความจำแบบไดนามิกและนิยมใช้ในการสร้างสแต็ก โปรแกรมนี้สาธิตการกลับลำดับลิงก์ลิสต์ใน C++ โดยใช้แนวทางดังนี้
อัลกอริทึม
เริ่มต้น ขั้นตอนที่ 1: สร้างสแต็กว่างแบบพอยน์เตอร์โหนด ขั้นตอนที่ 2: วนลูปผ่านลิสต์และ push โหนดทั้งหมดเข้าไปในสแต็ก ขั้นตอนที่ 3: (ข้ามขั้นตอน 3 ในต้นฉบับ) ขั้นตอนที่ 4: วนลูปผ่านลิสต์จากโหนดหัวอีกครั้ง ขั้นตอนที่ 5: pop ค่าจากยอดสแต็ก ขั้นตอนที่ 6: เชื่อมโยงในลำดับย้อนกลับ ขั้นตอนที่ 7: แสดงผล จบ
จากอัลกอริทึมข้างต้น โค้ด C++ ถูกเขียนขึ้น โดยไลบรารี stdlib มีบทบาทสำคัญในการให้เมธอดเกี่ยวกับสแต็ก
ตัวอย่าง
#include <iostream> #include <stdlib.h> using namespace std; struct linked_list { int data; struct linked_list *next; }; int stack[30], top = -1; struct linked_list* head = NULL; int printfromstack(int stack[]) { cout << "\nStack after Reversal::"; while (top >= 0) { cout << stack[top--] << " "; } } int push(struct linked_list** head, int n) { struct linked_list* newnode = (struct linked_list*)malloc(sizeof(struct linked_list)); newnode->data = n; newnode->next = (*head); (*head) = newnode; } int intostack(struct linked_list* head) { cout << "Linked list::"; while (head != NULL) { printf("%d ", head->data); stack[++top] = head->data; head = head->next; } } int main(int argc, char const *argv[]) { push(&head, 7); push(&head, 20); push(&head, 3); push(&head, 40); intostack(head); printfromstack(stack); return 0; }ตามที่เห็นในโค้ดข้างต้น โค้ดการดำเนินการสตริงทั้งหมดถูกรวมอยู่ในเมธอด retrieveChar() ซึ่งต่อมาถูกเรียกใช้ในฟังก์ชัน main()
ผลลัพธ์
Linked list:: 40 3 20 7 Stack after Reversal::7 20 3 40