1. single (direction) linked list:
– linkedlist.c:
#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*);
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){
printf(“%d”, n->data);
n = n->next;
}
printf(“n”);
}
void free_lists(node* lists){
if(lists->next != NULL){
free_lists(lists->next);
}
free(lists);
}
– main.c:
#include “linkedlist.c”
int main(void){
printf(“Hello worldn”);
node* singleLinkedListHead = create_node(9);
for(int i=0; i<10; i++){
node *tempNode = create_node(i);
insert_node(singleLinkedListHead, tempNode);
}
print_lists(singleLinkedListHead);
return 0;
}
2. double (direction) linked list :
–
參考:
1. Infinite Loop:「演算」連結串列:
http://program-lover.blogspot.tw/2008/05/linked-list.html
2. [資料結構]教學:
http://notepad.yehyeh.net/Content/DS/CH04/3.php