รายการที่เชื่อมโยงจัดสรรหน่วยความจำแบบไดนามิก ใช้เพื่อใช้งานสแต็ก โปรแกรมนี้แสดงการกลับรายการลิงก์ในการเขียนโปรแกรม c++ ที่นี่ ผู้สมัครสามารถใช้แนวทางต่อไปนี้เพื่อให้ได้ผลลัพธ์ที่คาดหวัง อัลกอริทึมมีดังนี้
อัลกอริทึม
START Step 1: create an empty stack of type node pointer Step 2: Traverse the list and push all of its nodes onto a stack Step 4: Traverse the list from the head node again Step 5: pop a value from the stack top step 6: connect them in reverse order Step 7: PRINT STOP
ตามอัลกอริธึมข้างต้น โค้ด 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