資料結構學習筆記
包含了新增節點、插入節點、移除節點、印出串列、遞迴刪除所有節點
#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 print_list(node*);
void free_list(node*);
void remove_node(node*);
int main(void) {
// your code goes here
node* list = create_node(0);
node* a = create_node(1);
node* b = create_node(2);
node* c = create_node(3);
node* d = create_node(4);
insert_node(list,a);
insert_node(a,b);
insert_node(b,c);
print_list(list);
remove_node(b);
insert_node(b, d);
print_list(list);
return 0;
}
node* create_node(int data){
node* n = (node*)malloc(sizeof(node));
n -> data = data;
n -> next = NULL;
return n;
}
void insert_node(node* a, node* b){
b -> next = a -> next;
a -> next = b;
}
void remove_node(node* n){
n -> next = n -> next -> next;
}
void print_list(node* list){
node* n = list;
while(n!=NULL){
printf("%d",n -> data);
n = n -> next;
}
printf("\n");
}
void free_list(node* list){
if(list!=NULL){
free_list(list -> next);
}
free(list);
}