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

การกลับลำดับลิงก์ลิสต์ด้วยสแต็กใน C++


ลิงก์ลิสต์จัดสรรหน่วยความจำแบบไดนามิกและนิยมใช้ในการสร้างสแต็ก โปรแกรมนี้สาธิตการกลับลำดับลิงก์ลิสต์ใน 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