คำอธิบาย
Singly Linked List มีโหนดที่เก็บข้อมูลและ Pointer ชี้ไปโหนดถัดไป (nextptr) เพื่อแสดงข้อมูลย้อนกลับ ต้องกลับทิศทางลิงก์ (Reverse the list)
โค้ดตัวอย่าง: กลับลำดับและแสดงผล
#include <stdio.h>
#include <stdlib.h>
struct node {
int num;
struct node *nextptr;
} *stnode;
void createNodeList(int n);
void reverseDispList();
void displayList();
int main() {
int n;
printf("Single Linked List: Print in reverse order\n");
printf("Input number of nodes: ");
scanf("%d", &n);
createNodeList(n);
printf("Data entered: ");
displayList();
reverseDispList();
printf("Reversed list: ");
displayList();
return 0;
}
void reverseDispList() {
struct node *prevNode, *curNode;
if (stnode != NULL) {
prevNode = stnode;
curNode = stnode->nextptr;
stnode = stnode->nextptr;
prevNode->nextptr = NULL;
while (stnode != NULL) {
stnode = stnode->nextptr;
curNode->nextptr = prevNode;
prevNode = curNode;
curNode = stnode;
}
stnode = prevNode;
}
}
// ฟังก์ชัน createNodeList และ displayList อยู่ในต้นฉบับ
ผลลัพธ์ตัวอย่าง
Input: 12 45 11 9 10 Original: 12 45 11 9 10 Reversed: 10 9 11 45 12