LinkedList practice in C

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

作者

RongSon

Graduate Student of CCU COMM Game Development, Network Communication, macOS/Ubuntu/Android, Arduino/Raspberry Pi/Intel Edison, Java/Python/C/C++

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *