#include <stdio.h>
#include <stdlib.h>
typedef struct QueueNode
{
int data;
struct QueueNode *next;
}QueueNode;
typedef struct
{
QueueNode *front;
QueueNode *rear;
} Queue;
void InitQueue(Queue *head)
{
head->front = head->rear = (QueueNode *)malloc(sizeof(QueueNode));
head->front->next = NULL;
}
void EnQueue(Queue *head, int x)
{
QueueNode *p = (QueueNode *)malloc(sizeof(QueueNode));
p->data = x;
p->next = NULL;
head->rear->next = p;
head->rear = p;
}
void DeQueue(Queue *head)
{
if (head->rear == head->front)
{
printf("队列为空\n");
return;
}
QueueNode *p;
p = head->front->next;
head->front->next = p->next;
if(head->rear==p){
head->rear = head->front;
}
free(p);
}
int getHead(Queue *head)
{
if (head->rear == head->front)
{
printf("队列为空\n");
return-1;
}else{
return head->front->next->data;
}
}
void showQueue(Queue *head)
{
QueueNode *p = head->front->next;
while (p != NULL)
{
printf("%d\n", p->data);
p = p->next;
}
}
int main(void)
{
Queue head;
InitQueue(&head);
EnQueue(&head, 1);
EnQueue(&head, 12);
EnQueue(&head, 13);
showQueue(&head);
// printf("------------------\n");
// DeQueue(&head);
// DeQueue(&head);
// DeQueue(&head);
// showQueue(&head);
// printf("------------------\n");
// DeQueue(&head);
//printf("%d\n",head.front->next->data);
printf("队首元素是%d\n",getHead(&head));
system("pause");
return 0;
}