#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
int data;
struct Node* next;
}Node;
Node* tail = NULL;
Node* initQueue()
{
Node* head = (Node*)malloc(sizeof(Node));
head->data = 0;
head->next = NULL;
return head;
}
void inQueue(Node* queue, int data)
{
Node* node = (Node*)malloc(sizeof(Node));
if (node == NULL)
{
perror("inQueue malloc errror\n");
return;
}
node->data = data;
node->next = tail->next;
tail->next = node;
tail = node;
queue->data++;
}
int isNullQueue(Node* queue)
{
return queue->data == 0;
}
int outQueue(Node* queue)
{
if (isNullQueue(queue))
{
printf("空队列\n");
return -1;
}
Node* head_next = queue->next;
int data = head_next->data;
queue->next = head_next->next;
free(head_next);
head_next = NULL;
queue->data--;
return data;
}
void noneQueue(Node* queue)
{
while (queue->next != NULL)
{
printf("出列:%d\n", outQueue(queue));
}
}
void printQueue(Node* queue)
{
Node* queue_cp = queue->next;
while (queue_cp)
{
printf("%d<-", queue_cp->data);
queue_cp = queue_cp->next;
}
printf("NULL\n");
}
int main(int argc, char const *argv[])
{
Node* queue = initQueue();
tail = queue;
inQueue(queue, 1);
inQueue(queue, 2);
inQueue(queue, 3);
inQueue(queue, 4);
inQueue(queue, 5);
printf("长度:%d\n", queue->data);
printQueue(queue);
printf("出列:%d\n", outQueue(queue));
printQueue(queue);
printf("出列:%d\n", outQueue(queue));
printQueue(queue);
noneQueue(queue);
printQueue(queue);
return 0;
}
