Link List
#include <stdio.h>
#include <stdlib.h>
struct node_test
{
int data;
node_test* next;
};
typedef struct node_test node;
void remove_node(node*);
void print_lists(node*);
void free_lists(node*);
node* create_node(int data)
{
// 動態配置記憶體
// malloc=動態
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;
}
int main(void)
{
// 宣告節點
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(5);
// 0 -> 5
insert_node(lists, e);
// 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(e, d);
print_lists(lists);
free_lists(lists);
system("pause");
}
// 宣告相關函式
void remove_node(node* n1)
{
n1->next = n1->next->next;
}
void print_lists(node* lists)
{
node* n = lists;
// 依序印出節點內容
while (n != NULL)
{
printf("%d ", n->data);
n = n->next;
}
printf("\n");
}
void free_lists(node* lists)
{
// 遞迴刪除串列所有節點
if (lists->next != NULL)
{
free_lists(lists->next);
}
free(lists);
}