[資料結構] C: Linked List

  • 120
  • 0

資料結構學習筆記

包含了新增節點、插入節點、移除節點、印出串列、遞迴刪除所有節點

#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);
}