1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| #include <stdlib.h> #include <stdbool.h> #include <stdio.h>
typedef int ElementType; typedef struct Node *PtrToNode;
struct Node { ElementType Data; PtrToNode Next; }; typedef PtrToNode Position;
struct QNode { Position Front, Rear; int MaxSize; }; typedef struct QNode *Queue;
Queue CreateQueue() { Queue queue; queue = (Queue) malloc(sizeof(struct QNode)); queue->Front = queue->Rear = NULL; return queue; }
bool isEmpty(Queue queue) { return (queue->Front == NULL); }
void add(Queue queue, ElementType item) { if (queue == NULL) { return; } PtrToNode node; node = (PtrToNode) malloc(sizeof(struct Node)); node->Data = item; node->Next = NULL; bool isEmpty(Queue queue); if (isEmpty(queue)) { queue->Front = node; queue->Rear = node; } else { queue->Rear = node; } }
ElementType Delete(Queue queue) { Position FrontCell; ElementType FrontElem; bool isEmpty(Queue queue); if (isEmpty(queue)) { printf("queue is empty!"); return -1; } else { FrontCell = queue->Front; FrontElem = FrontCell->Data; if (queue->Front == queue->Rear) { queue->Front = queue->Rear = NULL; } else { queue->Front = FrontCell->Next; } free(FrontCell); return FrontElem; } }
|