#include <stdio.h>
#include <stdlib.h>
// การกำหนดโครงสร้างของโหนด
typedef struct Node {
int data;
struct Node* next;
} Node;
// ฟังก์ชันสำหรับสร้างโหนดใหม่
Node* createNode(int data) {
Node
* newNode
= (Node
*)malloc(sizeof(Node
)); newNode->data = data;
newNode->next = NULL;
return newNode;
}
// ฟังก์ชันเพิ่มโหนดที่หัวของรายการ
void insertAtHead(Node** head, int data) {
Node* newNode = createNode(data);
newNode->next = *head;
*head = newNode;
}
// ฟังก์ชันลบโหนด
void deleteNode(Node** head, int key) {
Node *temp = *head, *prev;
if (temp != NULL && temp->data == key) {
*head = temp->next;
return;
}
while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return;
prev->next = temp->next;
}
// ฟังก์ชันค้นหาโหนด
Node* searchNode(Node* head, int key) {
Node* current = head;
while (current != NULL) {
if (current->data == key) return current;
current = current->next;
}
return NULL;
}
// ฟังก์ชันแสดงรายการที่เชื่อมโยง
void printList(Node* node) {
while (node != NULL) {
node = node->next;
}
}
// ฟังก์ชันหลัก
int main() {
Node* head = NULL;
insertAtHead(&head, 1);
insertAtHead(&head, 2);
insertAtHead(&head, 3);
printList(head);
deleteNode(&head, 2);
printList(head);
Node* found = searchNode(head, 3);
if (found != NULL) {
printf("Found node with data %d\n", found
->data
); } else {
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIOC4geC4suC4o+C4geC4s+C4q+C4meC4lOC5guC4hOC4o+C4h+C4quC4o+C5ieC4suC4h+C4guC4reC4h+C5guC4q+C4meC4lAp0eXBlZGVmIHN0cnVjdCBOb2RlIHsKICAgIGludCBkYXRhOwogICAgc3RydWN0IE5vZGUqIG5leHQ7Cn0gTm9kZTsKCi8vIOC4n+C4seC4h+C4geC5jOC4iuC4seC4meC4quC4s+C4q+C4o+C4seC4muC4quC4o+C5ieC4suC4h+C5guC4q+C4meC4lOC5g+C4q+C4oeC5iApOb2RlKiBjcmVhdGVOb2RlKGludCBkYXRhKSB7CiAgICBOb2RlKiBuZXdOb2RlID0gKE5vZGUqKW1hbGxvYyhzaXplb2YoTm9kZSkpOwogICAgbmV3Tm9kZS0+ZGF0YSA9IGRhdGE7CiAgICBuZXdOb2RlLT5uZXh0ID0gTlVMTDsKICAgIHJldHVybiBuZXdOb2RlOwp9CgovLyDguJ/guLHguIfguIHguYzguIrguLHguJnguYDguJ7guLTguYjguKHguYLguKvguJnguJTguJfguLXguYjguKvguLHguKfguILguK3guIfguKPguLLguKLguIHguLLguKMKdm9pZCBpbnNlcnRBdEhlYWQoTm9kZSoqIGhlYWQsIGludCBkYXRhKSB7CiAgICBOb2RlKiBuZXdOb2RlID0gY3JlYXRlTm9kZShkYXRhKTsKICAgIG5ld05vZGUtPm5leHQgPSAqaGVhZDsKICAgICpoZWFkID0gbmV3Tm9kZTsKfQoKLy8g4Lif4Lix4LiH4LiB4LmM4LiK4Lix4LiZ4Lil4Lia4LmC4Lir4LiZ4LiUCnZvaWQgZGVsZXRlTm9kZShOb2RlKiogaGVhZCwgaW50IGtleSkgewogICAgTm9kZSAqdGVtcCA9ICpoZWFkLCAqcHJldjsKICAgIGlmICh0ZW1wICE9IE5VTEwgJiYgdGVtcC0+ZGF0YSA9PSBrZXkpIHsKICAgICAgICAqaGVhZCA9IHRlbXAtPm5leHQ7CiAgICAgICAgZnJlZSh0ZW1wKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB3aGlsZSAodGVtcCAhPSBOVUxMICYmIHRlbXAtPmRhdGEgIT0ga2V5KSB7CiAgICAgICAgcHJldiA9IHRlbXA7CiAgICAgICAgdGVtcCA9IHRlbXAtPm5leHQ7CiAgICB9CiAgICBpZiAodGVtcCA9PSBOVUxMKSByZXR1cm47CiAgICBwcmV2LT5uZXh0ID0gdGVtcC0+bmV4dDsKICAgIGZyZWUodGVtcCk7Cn0KCi8vIOC4n+C4seC4h+C4geC5jOC4iuC4seC4meC4hOC5ieC4meC4q+C4suC5guC4q+C4meC4lApOb2RlKiBzZWFyY2hOb2RlKE5vZGUqIGhlYWQsIGludCBrZXkpIHsKICAgIE5vZGUqIGN1cnJlbnQgPSBoZWFkOwogICAgd2hpbGUgKGN1cnJlbnQgIT0gTlVMTCkgewogICAgICAgIGlmIChjdXJyZW50LT5kYXRhID09IGtleSkgcmV0dXJuIGN1cnJlbnQ7CiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQ7CiAgICB9CiAgICByZXR1cm4gTlVMTDsKfQoKLy8g4Lif4Lix4LiH4LiB4LmM4LiK4Lix4LiZ4LmB4Liq4LiU4LiH4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LmA4LiK4Li34LmI4Lit4Lih4LmC4Lii4LiHCnZvaWQgcHJpbnRMaXN0KE5vZGUqIG5vZGUpIHsKICAgIHdoaWxlIChub2RlICE9IE5VTEwpIHsKICAgICAgICBwcmludGYoIiVkIC0+ICIsIG5vZGUtPmRhdGEpOwogICAgICAgIG5vZGUgPSBub2RlLT5uZXh0OwogICAgfQogICAgcHJpbnRmKCJOVUxMXG4iKTsKfQoKLy8g4Lif4Lix4LiH4LiB4LmM4LiK4Lix4LiZ4Lir4Lil4Lix4LiBCmludCBtYWluKCkgewogICAgTm9kZSogaGVhZCA9IE5VTEw7CiAgICBpbnNlcnRBdEhlYWQoJmhlYWQsIDEpOwogICAgaW5zZXJ0QXRIZWFkKCZoZWFkLCAyKTsKICAgIGluc2VydEF0SGVhZCgmaGVhZCwgMyk7CiAgICBwcmludExpc3QoaGVhZCk7CiAgICBkZWxldGVOb2RlKCZoZWFkLCAyKTsKICAgIHByaW50TGlzdChoZWFkKTsKICAgIE5vZGUqIGZvdW5kID0gc2VhcmNoTm9kZShoZWFkLCAzKTsKICAgIGlmIChmb3VuZCAhPSBOVUxMKSB7CiAgICAgICAgcHJpbnRmKCJGb3VuZCBub2RlIHdpdGggZGF0YSAlZFxuIiwgZm91bmQtPmRhdGEpOwogICAgfSBlbHNlIHsKICAgICAgICBwcmludGYoIk5vZGUgbm90IGZvdW5kXG4iKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==