Được đưa ra với một chương trình danh sách liên kết phải in danh sách bắt đầu từ cuối cho đến đầu bằng cách sử dụng cấu trúc dữ liệu ngăn xếp
Input : 10 -> 5 -> 3 -> 1 -> 7 -> 9 Output: 9 -> 7 -> 1 -> 3 -> 5 -> 10
Ở đây, người dùng có thể sử dụng phương pháp tiếp cận các phần tử bật lên từ ngăn xếp trỏ đến vị trí [0] ngăn xếp và hơn là đi đến khi phần tử [n] ngăn xếp
Thuật toán
START Step 1 -> create structure Linked_list Declare int data Declare struct linked_list *next End Step 2 -> declare int stack[30], top = -1 Step 3 -> declare struct linked_list* head = NULL Step 4 -> create function int printfromstack(int stack[]) Loop While top>=0 Print stack[--top] End Step 5 -> create function int push(struct linked_list** head, int n) declare struct linked_list* newnode = (struct linked_list*)malloc(sizeof(struct linked_list)) set newnode->data = n set newnode->next = (*head) set (*head) = newnode step 6 -> create function int intostack(struct linked_list* head) Loop While head!=NULL Print head->data Set stack[++top] = head->data Set head = head->next End End Step 7 -> goto main() Call push(&head, 10) Call push(&head, 20) Call push(&head, 30) Call push(&head, 40) Call intostack(head) Call printfromstack(stack) STOP
Ví dụ
#include <stdio.h> #include <stdlib.h> struct linked_list { int data; struct linked_list *next; }; int stack[30], top = -1; struct linked_list* head = NULL; int printfromstack(int stack[]) { printf("\nStack:\n"); while(top>=0) { printf("%d ", 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) { printf("Linked list:\n"); while(head!=NULL) { printf("%d ", head->data); stack[++top] = head->data; head = head->next; } } int main(int argc, char const *argv[]) { push(&head, 10); push(&head, 20); push(&head, 30); push(&head, 40); intostack(head); printfromstack(stack); return 0; }
Đầu ra
nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau
Linked list: 40 30 20 10 Stack: 10 20 30 40