链队

#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;
}
posted @ 2021-09-24 17:03  传说中的旅行者  阅读(17)  评论(0编辑  收藏  举报