王道考研 ++++ 链表实现队列(C语言)

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

typedef struct LinkNode
{
  int data;
  struct LinkNode *next;
}LinkNode;

typedef struct
{
  LinkNode *front,*rear;
}LinkQueue;

/*初始化*/
void Init(LinkQueue *Q)
{
  Q->front = Q->rear = (LinkNode*)malloc(sizeof(LinkNode));
  Q->front->next = NULL;
}
/*判断队列是否为空*/
bool JudgeEmpty(LinkQueue *Q)
{
  if(Q->front == Q->rear)return true;
  else return false;
}
/*入队*/
void EnQueue(LinkQueue *Q,int number)
{
  LinkNode *S = (LinkNode*)malloc(sizeof(LinkNode));
  S->data = number;
  S->next = NULL;
  Q->rear->next = S;
  Q->rear = S;
}
/*出队*/
void DeQueue(LinkQueue *Q)
{
  Q->front = Q->front->next;
}
int main(int argc, char const *argv[]) {
  LinkQueue Q;
  int number;

  printf("请输入数字 -1结束:");
  scanf("%d",&number);

  Init(&Q);
  while (number != -1) {
    EnQueue(&Q,number);

    scanf("%d",&number);
  }

  while (!JudgeEmpty(&Q)) {
    DeQueue(&Q);
    printf("%d ",Q.front->data);
  }
  return 0;
}
发布了85 篇原创文章 · 获赞 40 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/WX_1218639030/article/details/98102737