链式队列的基本应用(接上篇)

xiaoxiao2021-02-28  89

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; }
转载请注明原文地址: https://www.6miu.com/read-70832.html

最新回复(0)