#endif // __SQQUEUE_H__
#include "SqQueue.h" int InitQueue (Queue *q) { if (q == NULL) { errno = ERROR; return FALSE; } // 置空队 q->front = 0; q->rear = 0; return TRUE; } int QueueEmpty (Queue *q) { if (q == NULL) { errno = ERROR; return FALSE; } return q->front == q->rear; } int QueueFull (Queue *q) { if (q == NULL) { errno = ERROR; return FALSE; } return q->front == (q->rear+1)%SIZE; } int EnQueue (Queue *q, QueueData x) { if (q == NULL) { errno = ERROR; return FALSE; } if (QueueFull(q)) { errno = FULL_QUEUE; return FALSE; } q->rear = (q->rear+1) % SIZE; q->data[q->rear] = x; return TRUE; } int DeQueue (Queue *q, QueueData *x) { if (q == NULL) { errno = ERROR; return FALSE; } if (QueueEmpty(q)) { errno = EMPTY_QUEUE; return FALSE; } q->front = (q->front + 1) % SIZE; *x = q->data[q->front]; return TRUE; } int GetFront (Queue *q, QueueData *x) { if (q == NULL) { errno = ERROR; return FALSE; } if (QueueEmpty(q)) { errno = EMPTY_QUEUE; return FALSE; } int index = (q->front + 1) % SIZE; *x = q->data[index]; return TRUE; }
#include "SqQueue.h" #include <stdio.h> int main() { Queue q; InitQueue(&q); if (QueueEmpty(&q)) { printf ("空队\n"); } int i; char str[50]; for (i = 0; i < 10; i++) { if (EnQueue(&q, i) != TRUE) { sprintf (str, "第 %d 个元素入队失败", i); myError(str); } } int x; for (i = 0; i < 10; i++) { if (DeQueue(&q, &x) != TRUE) { sprintf (str, "第 %d 个元素出队失败", i); myError(str); } printf ("x = %d\n", x); } return 0; }