#endif // __LINKQUEUE_H__
#include "LinkQueue.h" #include <stdlib.h> Queue* Create_Queue() { Queue * q = (Queue*)malloc(sizeof(Queue)/sizeof(char)); if (q == NULL) { errno = MALLOC_ERROR; return NULL; } // 置空队 q->front = NULL; q->rear = NULL; return q; } int QueueEmpty (Queue *q) { if (q == NULL) { errno = ERROR; return FALSE; } return q->front == NULL; } int EnQueue (Queue *q, QueueData x) { if (q == NULL) { errno = ERROR; return FALSE; } Node * node = (Node*)malloc(sizeof(Node)/sizeof(char)); if (node == NULL) { errno = MALLOC_ERROR; return FALSE; } node->data = x; node->next = NULL; if (q->front == NULL) { q->front = node; q->rear = node; } else { q->rear->next = node; q->rear = node; } return TRUE; } int DeQueue (Queue *q, QueueData *x) { if (q == NULL) { errno = ERROR; return FALSE; } if (QueueEmpty(q)) { errno = EMPTY_QUEUE; return FALSE; } Node *p = q->front; *x = p->data; q->front = p->next; free(p); if (q->front == NULL) q->rear = NULL; return TRUE; } int GetFront (Queue *q, QueueData *x) { if (q == NULL) { errno = ERROR; return FALSE; } if (QueueEmpty(q)) { errno = EMPTY_QUEUE; return FALSE; } *x = q->front->data; return TRUE; } int Destroy_Queue (Queue *q) { if (q == NULL) { errno = ERROR; return FALSE; } int x; while (QueueEmpty(q) != TRUE) { DeQueue(q, &x); } free(q); return TRUE; }
#include "LinkQueue.h" #include <stdio.h> int main() { Queue* q = Create_Queue(); 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; }