demo for insert values into sorted single list
来源:互联网 发布:淘宝工厂直销 编辑:程序博客网 时间:2024/05/20 22:02
#include <stdlib.h>#include <stdio.h>#include <time.h>extern "C"{ typedef struct node_s node_t; struct node_s { int value; node_t* next; }; void destroy(node_t* head) { node_t *p, *n = head; while(n) { p = n; n = n->next; free(p); } } typedef bool (*cmp_fn)(int,int); bool less_or_equal(int a, int b) { return a <= b; } bool greater_or_equal(int a, int b) { return a >= b; } bool insert(node_t** head, int value, cmp_fn cmp = less_or_equal) { node_t *entry, **current = head, *n ; n = (node_t*)malloc(sizeof(node_t)); if(!n) return false; n->value = value; n->next = 0; while(*current) { entry = *current; if(cmp(value, entry->value)) { *current = n; n->next = entry; return true; } current = &entry->next; } *current = n; return true; }}int main(){ srand((unsigned int)time(0)); node_t* list = 0; for(int i = 0; i < 5 ; ++i) { if(!insert(&list, rand()/*, greater_or_equal*/)) { break; } } for(node_t* n = list; n; n = n->next) { printf("%d\n", n->value); } destroy(list); return 0;}