#include <stdio.h>
#include <stdlib.h>
// 宣告節點結構
typedef struct ns
{
int data;
struct ns* next;
} node;
// 宣告相關函式
node* create_node(int);
void insert_node(node*, node*);
void remove_node(node*);
void print_lists(node*);
void free_lists(node*);
int main(void)
{
int ac[100];
ac[0] = 20;
// 宣告節點
node* lists = create_node(0);
node* a = create_node(1);
node* b = create_node(2);
node* c = create_node(3);
node* d = create_node(4);
//node* e = create_node(ac[0]);
// 0 -> 5
insert_node(lists, create_node(ac[0]));
// 0 -> 1 -> 5
insert_node(lists, a);
// 1 -> 2 -> 5
insert_node(a, b);
// 1 -> 3 -> 2
insert_node(a, c);
// 5 -> 4
insert_node(create_node(ac[0]), d);
print_lists(lists);
free_lists(lists);
}
node* create_node(int data)
{
// 動態配置記憶體
node
* n
= (node
*)malloc(sizeof(node
));
n->data = data;
n->next = NULL;
return n;
}
void insert_node(node* n1, node* n2)
{
n2->next = n1->next;
n1->next = n2;
}
void remove_node(node* n1)
{
n1->next = n1->next->next;
}
void print_lists(node* lists)
{
node* n = lists;
// 依序印出節點內容
while (n != NULL)
{
n = n->next;
}
}
void free_lists(node* lists)
{
// 遞迴刪除串列所有節點
if (lists->next != NULL)
{
free_lists(lists->next);
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIOWuo+WRiuevgOm7nue1kOaniwp0eXBlZGVmIHN0cnVjdCBucwp7CglpbnQgZGF0YTsKCXN0cnVjdCBucyogbmV4dDsKfSBub2RlOwoKLy8g5a6j5ZGK55u46Zec5Ye95byPCm5vZGUqIGNyZWF0ZV9ub2RlKGludCk7CnZvaWQgaW5zZXJ0X25vZGUobm9kZSosIG5vZGUqKTsKdm9pZCByZW1vdmVfbm9kZShub2RlKik7CnZvaWQgcHJpbnRfbGlzdHMobm9kZSopOwp2b2lkIGZyZWVfbGlzdHMobm9kZSopOwoKaW50IG1haW4odm9pZCkKewoJaW50IGFjWzEwMF07CglhY1swXSA9IDIwOwoJLy8g5a6j5ZGK56+A6bueCglub2RlKiBsaXN0cyA9IGNyZWF0ZV9ub2RlKDApOwoJbm9kZSogYSA9IGNyZWF0ZV9ub2RlKDEpOwoJbm9kZSogYiA9IGNyZWF0ZV9ub2RlKDIpOwoJbm9kZSogYyA9IGNyZWF0ZV9ub2RlKDMpOwoJbm9kZSogZCA9IGNyZWF0ZV9ub2RlKDQpOwoJLy9ub2RlKiBlID0gY3JlYXRlX25vZGUoYWNbMF0pOwoKCS8vIDAgLT4gNQoJaW5zZXJ0X25vZGUobGlzdHMsIGNyZWF0ZV9ub2RlKGFjWzBdKSk7CgoJLy8gMCAtPiAxIC0+IDUKCWluc2VydF9ub2RlKGxpc3RzLCBhKTsKCgkvLyAxIC0+IDIgLT4gNQoJaW5zZXJ0X25vZGUoYSwgYik7CgoJLy8gMSAtPiAzIC0+IDIKCWluc2VydF9ub2RlKGEsIGMpOwoKCS8vIDUgLT4gNAoJaW5zZXJ0X25vZGUoY3JlYXRlX25vZGUoYWNbMF0pLCBkKTsKCglwcmludF9saXN0cyhsaXN0cyk7CglmcmVlX2xpc3RzKGxpc3RzKTsKCglzeXN0ZW0oInBhdXNlIik7Cn0KCm5vZGUqIGNyZWF0ZV9ub2RlKGludCBkYXRhKQp7CgkvLyDli5XmhYvphY3nva7oqJjmhrbpq5QKCW5vZGUqIG4gPSAobm9kZSopbWFsbG9jKHNpemVvZihub2RlKSk7CgoJbi0+ZGF0YSA9IGRhdGE7CgluLT5uZXh0ID0gTlVMTDsKCglyZXR1cm4gbjsKfQoKdm9pZCBpbnNlcnRfbm9kZShub2RlKiBuMSwgbm9kZSogbjIpCnsKCW4yLT5uZXh0ID0gbjEtPm5leHQ7CgluMS0+bmV4dCA9IG4yOwp9Cgp2b2lkIHJlbW92ZV9ub2RlKG5vZGUqIG4xKQp7CgluMS0+bmV4dCA9IG4xLT5uZXh0LT5uZXh0Owp9Cgp2b2lkIHByaW50X2xpc3RzKG5vZGUqIGxpc3RzKQp7Cglub2RlKiBuID0gbGlzdHM7CgoJLy8g5L6d5bqP5Y2w5Ye656+A6bue5YWn5a65Cgl3aGlsZSAobiAhPSBOVUxMKQoJewoJCXByaW50ZigiJWQgIiwgbi0+ZGF0YSk7CgoJCW4gPSBuLT5uZXh0OwoJfQoKCXByaW50ZigiXG4iKTsKfQoKdm9pZCBmcmVlX2xpc3RzKG5vZGUqIGxpc3RzKQp7CgkvLyDpgZ7ov7TliKrpmaTkuLLliJfmiYDmnInnr4Dpu54KCWlmIChsaXN0cy0+bmV4dCAhPSBOVUxMKQoJewoJCWZyZWVfbGlzdHMobGlzdHMtPm5leHQpOwoJfQoKCWZyZWUobGlzdHMpOwp9