#include "queue.h" #include QueueItem< int>::QueueItem() { next = NULL; prev = NULL; } QueueItem< int>::QueueItem(int data1) { next = NULL; prev = NULL; data = data1; } QueueItem< int> * QueueItem< int>::Add(QueueItem< int> * item1) { if (!item1) return NULL; if (next) { next->prev = item1; item1->next = next; } else { // item1->next = NULL; } item1->prev = this; next = item1; return item1; } QueueItem< int> * QueueItem< int>::OrdAdd(QueueItem< int> * item1) { if (!item1) return NULL; if (item1->data < data) { item1->next = this; if (prev) { item1->prev = prev; prev->next = item1; } prev = item1; } else { if (next) { return next->OrdAdd(item1); } else { Add(item1); } } return First(); } QueueItem< int> * QueueItem< int>::Insert(QueueItem< int> * item1) { if (item1) { item1->Add(this); return item1; } else return this; } QueueItem< int> * QueueItem< int>::OrderlyInsert(QueueItem< int> * item1) { if (!item1) return this; if (item1->next) { if (item1->next->data > data) return Insert(item1); else return OrderlyInsert(item1->next)->prev; } else { item1->Add(this); return item1; } }