#include "stringops.h" #include "move.h" #include <stdio.h> void room_queue_add (room_queue *rq, room *r, int size) { room_queue_elt *new, *dead; #ifdef FUNCTIONS puts ("**room_queue_add"); #endif new = allocate (room_queue_elt); new->room = r; new->number = rq->number_at; (rq->number_at)++; new->next = NULL; if (rq->tail != NULL) rq->tail->next = new; else rq->head = new; rq->tail = new; (rq->size)++; while (rq->size > size) { dead = rq->head; rq->head = rq->head->next; free (dead); (rq->size)--; } } static void room_queue_elt_burn (room_queue_elt *rqe) { #ifdef FUNCTIONS puts ("<room_queue_elt_burn>"); #endif if (rqe != NULL) { room_queue_elt_burn (rqe->next); free (rqe); } } void room_queue_burn (room_queue *rq) { #ifdef FUNCTIONS puts ("**room_queue_burn"); #endif room_queue_elt_burn (rq->head); free (rq); } int room_queue_test (room_queue *rq, room *r) { room_queue_elt *scan; #ifdef FUNCTIONS puts ("**room_queue_test"); #endif for (scan = rq->head; scan != NULL; scan = scan->next) { if (scan->room == r) return 1; } return 0; } int room_queue_num (room_queue *rq, room *r) { room_queue_elt *scan; #ifdef FUNCTIONS puts ("**room_queue_num"); #endif for (scan = rq->head; scan != NULL; scan = scan->next) { if (scan->room == r) return scan->number; } return 0; }