数据结构(链队列

简介: 数据结构(链队列

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;
}
目录
打赏
0
1
1
0
27
分享
相关文章
【数据结构】C语言实现链队列(附完整运行代码)
【数据结构】C语言实现链队列(附完整运行代码)
171 0
|
7月前
|
【数据结构与算法】链队列
【数据结构与算法】链队列
40 0
【数据结构】队列(循环队列和链队列)详细讲解各种操作
【数据结构】队列(循环队列和链队列)详细讲解各种操作
1036 0
追梦之旅【数据结构篇】——详解C语言实现链队列
详解C语言实现链队列~😎 前言🙌 整体实现内容分析💞 预备小知识🙌 1.链队列头文件编写🙌 2.链队列功能文件(Queue.c )编写:🙌 1)初始化函数实现 2)销毁函数实现 3)队尾插入元素函数实现 4)队头删除元素函数实现 5)获取队头元素函数实现 6)获取队尾元素函数实现 7)获取队列元素个数的函数实现 8)判空函数实现 3.链队列测试文件编写🙌 总结撒花💞
173 0
【数据结构初阶】一文详解顺序栈和链队列的基本操作(下)
【数据结构初阶】一文详解顺序栈和链队列的基本操作
89 0
【数据结构初阶】一文详解顺序栈和链队列的基本操作(下)
【数据结构初阶】一文详解顺序栈和链队列的基本操作(上)
【数据结构初阶】一文详解顺序栈和链队列的基本操作
129 0
【数据结构初阶】一文详解顺序栈和链队列的基本操作(上)
数据结构项目——循环队列与链队列
数据结构项目——循环队列与链队列
218 0
数据结构项目——循环队列与链队列
数据结构——链队列
数据结构——链队列
229 0
数据结构——链队列
|
4月前
|
非递归实现后序遍历时,如何避免栈溢出?
后序遍历的递归实现和非递归实现各有优缺点,在实际应用中需要根据具体的问题需求、二叉树的特点以及性能和空间的限制等因素来选择合适的实现方式。
70 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等