数据结构(链队列

简介: 数据结构(链队列

1. 讲解:

2. C++代码实现:

#include <stdlib.h>
#include <iostream>

using namespace std;

#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;
}

// 入队
bool EnQueue(LinkQueue& Q, ElemType e) {
  LinkNode* s = (LinkNode*)malloc(sizeof(LinkNode));
  if (s == NULL) return false;
  s->data = e;
  s->next = NULL;
  Q.rear->next = s;
  Q.rear = s;
}

// 出队
bool DeQueue(LinkQueue& Q, ElemType& e) {
  if (IsEmpty(Q)) return false; // 空队

  LinkNode* s = Q.front->next;
  Q.front->next = s->next;
  e = s->data;
  if (s == Q.rear) {        // 最后一个元素出队时
    Q.rear = Q.front;
  }
  free(s);
  return true;
}

int main() {
  LinkQueue Q;
  InitQueue(Q); // 初始化队列

  // 入队操作
  for (int i = 1; i <= 5; ++i) {
    EnQueue(Q, i * 10);
    cout << "入队元素:" << i * 10 << endl;
  }

  // 出队操作
  ElemType e;
  while (!IsEmpty(Q)) {
    DeQueue(Q, e);
    cout << "出队元素:" << e << endl;
  }

  return 0;
}
目录
相关文章
|
6月前
|
存储 编译器 C语言
【数据结构】C语言实现链队列(附完整运行代码)
【数据结构】C语言实现链队列(附完整运行代码)
128 0
|
3月前
|
算法
【数据结构与算法】链队列
【数据结构与算法】链队列
18 0
【数据结构】链队列的C语言实现
【数据结构】链队列的C语言实现
|
存储 缓存 算法
【数据结构】队列(循环队列和链队列)详细讲解各种操作
【数据结构】队列(循环队列和链队列)详细讲解各种操作
895 0
|
存储 算法 测试技术
追梦之旅【数据结构篇】——详解C语言实现链队列
详解C语言实现链队列~😎 前言🙌 整体实现内容分析💞 预备小知识🙌 1.链队列头文件编写🙌 2.链队列功能文件(Queue.c )编写:🙌 1)初始化函数实现 2)销毁函数实现 3)队尾插入元素函数实现 4)队头删除元素函数实现 5)获取队头元素函数实现 6)获取队尾元素函数实现 7)获取队列元素个数的函数实现 8)判空函数实现 3.链队列测试文件编写🙌 总结撒花💞
134 0
【数据结构初阶】一文详解顺序栈和链队列的基本操作(下)
【数据结构初阶】一文详解顺序栈和链队列的基本操作
75 0
【数据结构初阶】一文详解顺序栈和链队列的基本操作(下)
【数据结构初阶】一文详解顺序栈和链队列的基本操作(上)
【数据结构初阶】一文详解顺序栈和链队列的基本操作
94 0
【数据结构初阶】一文详解顺序栈和链队列的基本操作(上)
数据结构项目——循环队列与链队列
数据结构项目——循环队列与链队列
198 0
数据结构项目——循环队列与链队列
|
C++
数据结构——链队列
数据结构——链队列
217 0
数据结构——链队列
|
14天前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
90 9