完整实现代码
#include <stdio.h>
#include <stdlib.h>
typedef struct QueueNode {
int data;
struct QueueNode *next;
} QueueNode;
typedef struct Queue {
int length;
QueueNode *front;
QueueNode *rear;
} Queue;
void initQueue(Queue *queue) {
queue->length = 0;
queue->rear = queue->front = NULL;
}
void enterQueue(Queue *queue, int data) {
QueueNode *node = (QueueNode *) malloc(sizeof(QueueNode));
node->data = data;
node->next = NULL;
if (queue->front) {
queue->rear->next = node;
queue->rear = node;
} else {
queue->front = queue->rear = node;
}
queue->length++;
}
void departQueue(Queue *queue, int *data) {
if (!queue->front) {
printf("出队失败!\n");
return;
}
QueueNode *p = queue->front;
queue->front = queue->front->next;
*data = p->data;
free(p);
if (!queue->front) {
queue->rear = NULL;
}
queue->length--;
}
void printQueue(Queue *queue) {
QueueNode *p = queue->front;
for (int i = 0; i < queue->length; ++i) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
void test() {
Queue queue;
initQueue(&queue);
int sel, data;
while (true) {
printf("1.入队\n2.出队\n3.遍历\n");
scanf("%d", &sel);
switch (sel) {
case 1: {
printf("入队元素:");
scanf("%d", &data);
enterQueue(&queue, data);
break;
}
case 2: {
departQueue(&queue, &data);
printf("出队元素:%d\n", data);
break;
}
case 3: {
printQueue(&queue);
break;
}
default:
return;
}
system("pause");
system("cls");
}
}
int main() {
test();
return 0;
}