linked list ของ Integer โดยการแทรกข้อมูล แบบเรียงลำดับจากน้อยไปมาก
ที่มา: การโปรแกรมภาษา C ดร.ดวงแก้ว สวามิภักดิ์
linklist.h
[code lang=”c”]
/*linklist.h*/
typedef struct node * NODEPTR;
struct node {
int data;
NODEPTR next;
} NODE;
void print_list(NODEPTR link);
int insert_list(int val, NODEPTR * link);
NODEPTR make_node(int value);
[/code]
linklist.c
[code lang=”c”]
/*linklist.c*/
#include <stdio.h>
#include <stdlib.h>
#include "linklist.h"
int main() {
NODEPTR link = NULL; // the sorted linked list
int val; // input value
val = 10;
insert_list(val, &link);
val = 20;
insert_list(val, &link);
val = 1;
insert_list(val, &link);
val = 15;
insert_list(val, &link);
print_list(link);
return 0;
}
void print_list(NODEPTR link) {
for (; link != NULL; link = link->next) {
printf("%d\n", link->data);
}
}
int insert_list(int val, NODEPTR * link) {
NODEPTR curr = *link;
NODEPTR prev = NULL, make_node(), temp;
for (; curr != NULL && val > curr->data; curr = curr->next)
prev = curr;
if ((temp = make_node(val)) != NULL) {
temp->next = curr;
if (prev == NULL)
*link = temp;
else
prev->next = temp;
}
return (temp != NULL);
}
NODEPTR make_node(int value) {
NODEPTR newptr;
//char *malloc();
if ((newptr = (NODEPTR) malloc(sizeof(struct node))) != NULL) {
newptr->data = value;
newptr->next = NULL;
}
return (newptr);
}
[/code]