mirror of https://github.com/OpenTTD/OpenTTD
(svn r20679) -Codechange: Remove unused insertion sorter.
parent
fa6203fdc3
commit
ded2acf02e
|
@ -14,82 +14,6 @@
|
|||
#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
|
||||
* 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_FreeProc(Queue *q, bool free_values);
|
||||
|
||||
struct InsSortNode {
|
||||
void *item;
|
||||
int priority;
|
||||
InsSortNode *next;
|
||||
};
|
||||
|
||||
struct BinaryHeapNode {
|
||||
void *item;
|
||||
int priority;
|
||||
|
@ -67,9 +61,6 @@ struct Queue {
|
|||
Queue_FreeProc *free;
|
||||
|
||||
union {
|
||||
struct {
|
||||
InsSortNode *first;
|
||||
} inssort;
|
||||
struct {
|
||||
uint max_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
|
||||
* For information, see:
|
||||
|
|
Loading…
Reference in New Issue