算法与数据结构 栈队列 (C++)

embedded/2024/9/23 23:16:49/

5.随机产生10个100以内的整数建立链队列,显示链队列中所有数据元素;从键盘输入出队元素个数 n (1<= n <=10),将 n 个元素出队后显示此时的队头元素。

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
// 定义链表的节点
template <typename DataType>
class Node {
public:DataType data;Node* next;
};
// 定义链队列
template <typename DataType>
class LinkQueue {
public:LinkQueue() {front = new Node<DataType>;rear = front;front->next = nullptr;}~LinkQueue() {clear();delete front;}void EnQueue(DataType x);DataType Dequeue();void Display(); // 显示队列中所有数据元素void GenerateRandomElements(int count); // 随机生成元素建立链队列DataType Front(); // 获取队头元素void clear(); // 清空队列
private:Node<DataType>* front;Node<DataType>* rear;
};
// 链队列的实现——入队
template <typename DataType>
void LinkQueue<DataType>::EnQueue(DataType x) {Node<DataType>* s = new Node<DataType>;s->data = x;s->next = nullptr;rear->next = s;rear = s;
}
// 链队列的实现——出队
template <typename DataType>
DataType LinkQueue<DataType>::Dequeue() {if (rear == front) {throw "下溢";}Node<DataType>* p = front->next;DataType x = p->data;front->next = p->next;if (p == rear) {rear = front;}delete p;return x;
}
// 显示队列中所有数据元素
template <typename DataType>
void LinkQueue<DataType>::Display() {Node<DataType>* p = front->next;while (p != nullptr) {cout << p->data << " ";p = p->next;}cout << endl;
}
// 随机生成元素建立链队列
template <typename DataType>
void LinkQueue<DataType>::GenerateRandomElements(int count) {srand(time(nullptr));for (int i = 0; i < count; ++i) {DataType x = rand() % 100; // 生成0到99的随机数EnQueue(x);}
}
// 获取队头元素
template <typename DataType>
DataType LinkQueue<DataType>::Front() {if (rear == front) {throw "队列为空";}return front->next->data;
}
// 清空队列
template <typename DataType>
void LinkQueue<DataType>::clear() {Node<DataType>* temp;while (front->next!=nullptr) {temp = front->next;front->next = temp->next;delete temp;if (temp == rear){rear = front;}}
}
int main() {LinkQueue<int> queue;// 随机生成10个100以内的整数建立链队列queue.GenerateRandomElements(10);cout << "链队列中所有数据元素:";queue.Display(); // 显示队列中所有数据元素int n;cout << "请输入出队元素个数 n (1<= n <=10):";cin>>n;// 出队操作for (int i = 0; i < n; ++i) {   int dequeuedElement = queue.Dequeue();cout << "出队元素:" << dequeuedElement << endl;}// 显示此时的队头元素cout << "此时的队头元素:" << queue.Front() << endl;return 0;
}


http://www.ppmy.cn/embedded/2142.html

相关文章

Django实现的登录注册功能

1 前言 在Web开发中&#xff0c;用户登录和注册是最基本且必不可少的功能。Django&#xff0c;作为一个高级的Python Web框架&#xff0c;为我们提供了强大的工具和库来快速实现这些功能。下面&#xff0c;我将详细介绍如何使用Django来实现用户登录和注册功能。 2 功能介绍 …

从零自制docker-9-【管道实现run进程和init进程传参】

文章目录 命令行中输入参数长度过长匿名管道从父进程到子进程传参[]*os.File{}os.NewFile和io.ReadAllexe.LookPathsyscall.Execstrings.Split(msgStr, " ")/bin/ls: cannot access : No such file or directory代码 命令行中输入参数长度过长 用户输入参数过长或包…

X-314智能合约:金融创新的强大引擎

&#x1f4a5;火爆到烫手的X-314智能合约&#x1f525; X-314智能合约是基于以太坊区块链开发的&#xff0c;具有高度可定制性和灵活性。 ave开单独板块&#xff1b;详细资料已经准备好&#xff1b;对web3感兴趣的大佬货&#xff1b;多交流多指导&#x1f91d; ​X-314智能合…

探索Java中的栈:Stack与Deque(ArrayDeque和LinkedList)

文章目录 1. 栈&#xff08;Stack&#xff09;1.1 定义方式1.2 特点1.3 栈的层次结构 2. 双端队列&#xff08;Deque&#xff09;2.1 定义方式及继承关系2.2 特点&#xff1a;2.3 ArrayDeque2.4 LinkedList2.5 Deque 的各种方法2.6 如何选择ArrayDeque和LinkedList 3. 如何选择…

zookeeper与kafka

一、zookeeper介绍&#xff1a; 1.zookeeper简介&#xff1a; Zookeeper&#xff1a;开源分布式的服务&#xff0c;为分布式框架提供协调服务的apache项目 2.zookeeper特点&#xff1a; Zookeeper&#xff1a;一个领导者(Leader) &#xff0c;多个跟随者(Follower) 组成的集…

Adobe将Sora、Runway、Pika,集成在PR中

4月15日晚&#xff0c;全球多媒体巨头Adobe在官网宣布&#xff0c;将OpenAI的Sora、Pika 、Runway等著名第三方文生视频模型&#xff0c;集成在视频剪辑软件Premiere Pro中&#xff08;简称“PR”&#xff09;。 同时&#xff0c;Adob也会将自身研发的Firefly系列模型包括视频…

Java 算法篇-深入了解 BF 与 KMP 算法

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 BF 算法概述 1.1 BF 算法实际使用 2.0 KMP 算法概述 2.1 KMP 算法实际使用 2.2 相比于 BF 算法实现&#xff0c;KMP 算法的重要思想 2.3 为什么要这样设计&#x…

ES6的模块化

ES6模块化是JavaScript的一种组织代码的方式&#xff0c;它允许开发者将代码分割成多个独立的部分&#xff08;模块&#xff09;&#xff0c;每个模块有自己的作用域和接口&#xff0c;模块之间可以通过导入&#xff08;import&#xff09;和导出&#xff08;export&#xff09…