Skip to content

Instantly share code, notes, and snippets.

@caljim
Created January 29, 2013 07:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save caljim/4662552 to your computer and use it in GitHub Desktop.
Save caljim/4662552 to your computer and use it in GitHub Desktop.
Insert Sort on Lined List
#include "insert_sort.h"
Node* find_node(int value)
{
Node *start = &root;
while(start->after != NULL) {
if(start->value == value)
return start;
else
start = start->after;
}
return NULL;
}
Node* insert_node(int value)
{
Node *start = &root;
Node *need = (Node *)malloc(sizeof(Node));
need->value = value;
need->after = NULL;
need->pre = NULL;
while(start->after != NULL) {
if(start->value <= value)
start = start->after;
else {
break;
}
// else {
//
// start->pre->after = need;
// need->pre = start->pre;
// need->after = start;
// start->pre = need;
// return need;
// }
}
// if(start->after == NULL) {
// if(start->value <= value) {
// start->after = need;
// need->pre = start;
// }
// else {
// start->pre->after = need;
// need->pre = start->pre;
// need->after = start;
// start->pre = need;
// }
// }
if(start->after == NULL && start->value <= value) {
start->after = need;
need->pre = start;
}
else {
start->pre->after = need;
need->pre = start->pre;
need->after = start;
start->pre = need;
}
return need;
}
//int main(void)
//{
// int needs[10] = {1,3,1,6,7,8,2,10,9,4};
// int i;
//
// for(i = 0; i < 10; i++) {
// insert_node(needs[i]);
// }
//
// Node *p = &root;
//
// while(p != NULL) {
// printf("NODE VAL: %d\n",p->value);
// p = p->after;
// }
//
// return 0;
//}
#include <stdio.h>
typedef struct node {
struct node *pre, *after;
int value;
} Node;
Node root = {NULL, NULL, '\0'};
Node* insert_node(int value);
Node* find_node(int value);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment