All pastes #408378 Raw Edit

Miscellany

public c v1 · immutable
#408378 ·published 2007-03-24 19:57 UTC
rendered paste body
#include <stdio.h>#include "lib_type.h"#define GRIDWIDTH 120#define GRIDHEIGHT 80struct open_list_node{	u32 x;	u32 y;	u32 fvalue;	struct open_list_node *parent;	struct open_list_node *next;};typedef struct open_list_node olnode;olnode* head;void init_open_list(u32 x, u32 y, u32 f){	head = calloc(1,sizeof(head) * GRIDWIDTH * GRIDHEIGHT);	head->x = x/8;	head->y = y/8;//	Map_rep = Map_rep + (y/8 * GRIDWIDTH) + x/8;	head->fvalue = f;	head->parent = NULL;	head->next = NULL;}void insert(u32 x, u32 y, u32 f){	if (in_list(x,y,f) == 1){		return;	}	else{		olnode* newnode = calloc(1,sizeof(newnode));		newnode->x = x/8;		newnode->y = y/8;		newnode->fvalue = f;		olnode* temp = head;		while(temp != NULL){			printf("%d\n",temp->fvalue);			if(is_smaller(newnode,temp) == 1){				if(temp->parent == NULL){					printf("NOOOOOOOOOOOOOOO\n");					newnode->next = temp;					newnode->parent = NULL;					temp->parent = newnode;					head = newnode;					return;				}				else{					printf("HELLO\n");					newnode->parent = temp->parent;					newnode->parent->next = newnode;					temp->parent = newnode;					newnode->next = temp;					return;				}			}			else if(temp->next == NULL){		// end of list			 	temp->next = newnode;				newnode->parent = temp;				newnode->next = NULL;				printf("%d\n",temp->fvalue);				printf("HELLO\n");				return;			}			temp = temp->next;		}	}}int in_list(u32 x, u32 y, u32 f){//	olnode* temp = head;//	while (temp != NULL){//		if ((temp->x == x/8) && (temp->y == y/8)){//			is_better(temp,f);//			return 1;//		}//		temp = temp->next;//	}//	return 0;}void is_better(olnode* node,u32 f){//	if (f < node->fvalue){//		node->parent->next = node->next;//		node->next->parent = node->parent;//		free(node);//		olnode* betternode = calloc(1,sizeof(betternode));//////	}}int is_smaller(olnode* n1, olnode* n2){	if (n1->fvalue <= n2->fvalue){		return 1;	}	else {		return 0;	}}olnode* extract_min(){	olnode* min= head;	if (head->next != NULL){		head = head->next;		head->parent = NULL;	}	else {		head = NULL;	}	return min;}int main(void){	init_open_list(50,25,2);	insert(70,85,7);	insert(35,49,5);	olnode* temp = extract_min();	u32 x = temp->x;	u32 y = temp->y;	u32 f = temp->fvalue;	printf("x: %d y: %d f: %d\n",x,y,f);	temp = extract_min();	x = temp->x;	y = temp->y;	f = temp->fvalue;	printf("x: %d y: %d f: %d\n",x,y,f);	temp = extract_min();	x = temp->x;	y = temp->y;	f = temp->fvalue;	printf("x: %d y: %d f: %d\n",x,y,f);}