Quick actions

cmd+k|ctrl+k

Navigation

Languages

链式存储队列 基本操作

Snippet info

Language

Cpp

Visibility

public

Author

qwas

Created

2024-05-20T09:56:46.259934Z

Updated

2024-05-20T09:56:46.259934Z

#include <stdio.h>
#include <stdlib.h>
#define ElemType int

typedef struct LinkNode // 链式队列结点
{
  ElemType data;
  struct LinkNode *next;
} LinkNode;

typedef struct // 链式队列
{
  LinkNode *front, *rear; // 队列的队头和队列指针
} LinkQueue;

// 初始化
void InitQueue(LinkQueue &Q) // 初始化带头结点的链队列
{
  Q.front = Q.rear = (LinkNode *)malloc(sizeof(LinkNode)); // 建立头结点
  Q.front->next = NULL;                                    // 初始为空
}
// 判断队空
bool IsEmpty(LinkQueue Q)
{
  if (Q.front == Q.rear)
    return true;
  else
    return false;
}

// 入队
void EnQueue(LinkQueue &Q, ElemType x)
{
  LinkNode *s = (LinkNode *)malloc(sizeof(LinkNode)); // 创建新结点
  s->data = x;
  s->next = NULL;
  Q.rear->next = s; // 插入链尾
  Q.rear = s;       // 修改尾指针
}

// 出队
bool DeQueue(LinkQueue &Q, ElemType &x)
{
  if (Q.front == Q.rear)
    return false; // 空队
  LinkNode *p = Q.front->next;
  x = p->data;
  Q.front->next = p->next;
  if (Q.rear == p)
    Q.rear = Q.front; // 若原队列中只有一个结点,删除后变空
  free(p);
  return true;
}

int main()
{
  return 0;
}
INFO