mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-19 15:25:39 +00:00
(svn r20679) -Codechange: Remove unused insertion sorter.
This commit is contained in:
parent
0439025e74
commit
17c4783571
@ -14,82 +14,6 @@
|
|||||||
#include "queue.h"
|
#include "queue.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Insertion Sorter
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void InsSort_Clear(Queue *q, bool free_values)
|
|
||||||
{
|
|
||||||
InsSortNode *node = q->data.inssort.first;
|
|
||||||
InsSortNode *prev;
|
|
||||||
|
|
||||||
while (node != NULL) {
|
|
||||||
if (free_values) free(node->item);
|
|
||||||
prev = node;
|
|
||||||
node = node->next;
|
|
||||||
free(prev);
|
|
||||||
}
|
|
||||||
q->data.inssort.first = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void InsSort_Free(Queue *q, bool free_values)
|
|
||||||
{
|
|
||||||
q->clear(q, free_values);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool InsSort_Push(Queue *q, void *item, int priority)
|
|
||||||
{
|
|
||||||
InsSortNode *newnode = MallocT<InsSortNode>(1);
|
|
||||||
|
|
||||||
newnode->item = item;
|
|
||||||
newnode->priority = priority;
|
|
||||||
if (q->data.inssort.first == NULL ||
|
|
||||||
q->data.inssort.first->priority >= priority) {
|
|
||||||
newnode->next = q->data.inssort.first;
|
|
||||||
q->data.inssort.first = newnode;
|
|
||||||
} else {
|
|
||||||
InsSortNode *node = q->data.inssort.first;
|
|
||||||
while (node != NULL) {
|
|
||||||
if (node->next == NULL || node->next->priority >= priority) {
|
|
||||||
newnode->next = node->next;
|
|
||||||
node->next = newnode;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
node = node->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void *InsSort_Pop(Queue *q)
|
|
||||||
{
|
|
||||||
InsSortNode *node = q->data.inssort.first;
|
|
||||||
void *result;
|
|
||||||
|
|
||||||
if (node == NULL) return NULL;
|
|
||||||
result = node->item;
|
|
||||||
q->data.inssort.first = q->data.inssort.first->next;
|
|
||||||
assert(q->data.inssort.first == NULL || q->data.inssort.first->priority >= node->priority);
|
|
||||||
free(node);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool InsSort_Delete(Queue *q, void *item, int priority)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void init_InsSort(Queue *q)
|
|
||||||
{
|
|
||||||
q->push = InsSort_Push;
|
|
||||||
q->pop = InsSort_Pop;
|
|
||||||
q->del = InsSort_Delete;
|
|
||||||
q->clear = InsSort_Clear;
|
|
||||||
q->free = InsSort_Free;
|
|
||||||
q->data.inssort.first = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Binary Heap
|
* Binary Heap
|
||||||
* For information, see: http://www.policyalmanac.org/games/binaryHeaps.htm
|
* For information, see: http://www.policyalmanac.org/games/binaryHeaps.htm
|
||||||
|
@ -25,12 +25,6 @@ typedef bool Queue_DeleteProc(Queue *q, void *item, int priority);
|
|||||||
typedef void Queue_ClearProc(Queue *q, bool free_values);
|
typedef void Queue_ClearProc(Queue *q, bool free_values);
|
||||||
typedef void Queue_FreeProc(Queue *q, bool free_values);
|
typedef void Queue_FreeProc(Queue *q, bool free_values);
|
||||||
|
|
||||||
struct InsSortNode {
|
|
||||||
void *item;
|
|
||||||
int priority;
|
|
||||||
InsSortNode *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct BinaryHeapNode {
|
struct BinaryHeapNode {
|
||||||
void *item;
|
void *item;
|
||||||
int priority;
|
int priority;
|
||||||
@ -67,9 +61,6 @@ struct Queue {
|
|||||||
Queue_FreeProc *free;
|
Queue_FreeProc *free;
|
||||||
|
|
||||||
union {
|
union {
|
||||||
struct {
|
|
||||||
InsSortNode *first;
|
|
||||||
} inssort;
|
|
||||||
struct {
|
struct {
|
||||||
uint max_size;
|
uint max_size;
|
||||||
uint size;
|
uint size;
|
||||||
@ -80,15 +71,6 @@ struct Queue {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Insertion Sorter
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Initializes a inssort and allocates internal memory. There is no maximum
|
|
||||||
* size */
|
|
||||||
void init_InsSort(Queue *q);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Binary Heap
|
* Binary Heap
|
||||||
* For information, see:
|
* For information, see:
|
||||||
|
Loading…
Reference in New Issue
Block a user