赞
踩
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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。