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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
#include <stdlib.h> #include <sys/malloc.h> #include <stdbool.h>
#define LEN 6
typedef struct LQueue; typedef struct *PQueue;
struct { int *pBase; int front; int rear; };
void init(PQueue); bool enqueue(PQueue, int); bool dequeue(PQueue, int *); void show(PQueue); bool is_full(PQueue); bool is_empty(PQueue);
int main(void) { int val; LQueue queue; init(&queue); enqueue(&queue, 1); enqueue(&queue, 2); enqueue(&queue, 3); show(&queue); if(dequeue(&queue,&val)) { printf("出队元素是:%dn", val); } show(&queue); printf("插入元素:"); scanf("%d", &val); enqueue(&queue, val); show(&queue);
return 0; }
void init(PQueue queue) { queue->pBase = (int *)malloc(sizeof(int) * LEN); queue->front = 0; queue->rear = 0; return; }
bool enqueue(PQueue queue, int val) { if (is_full(queue)) { return false; } else { queue->pBase[queue->rear] = val; queue->rear = (queue->rear + 1) % LEN; return true; } }
bool is_full(PQueue queue) { if ((queue->rear + 1) % LEN == queue->front) { return true; } else { return false; } }
void show(PQueue queue) { if (is_empty(queue)) { printf("空队列n"); } else { int i = queue->front; while (i != queue->rear) { printf("%dn", queue->pBase[i]); i = (i + 1) % LEN; } } return; }
bool is_empty(PQueue queue) { if(queue->front == queue->rear) { return true; } else { return false; } }
bool dequeue(PQueue queue, int *pVal) { if(is_empty(queue)) { printf("空队列n"); return false; } else { *pVal = queue->pBase[queue->front]; queue->front = (queue->front + 1) % LEN; return true; } }
|
近期评论