当前位置: 首页 > news >正文

算法与数据结构 顺序栈(C++)

随机产生10个100以内的整数建立一个顺序栈,从栈顶到栈底依次显示栈内元素;从键盘输入出栈元素个数 n (1<= n <=10),将 n 个元素依次出栈并显示出栈元素,再显示此时栈顶元素。

#include <iostream>  
#include <cstdlib>  
#include <ctime>  
using namespace std;
const int StackSize = 100;
template <typename DataType>
class SeqStack {
public:SeqStack() : top(-1) {} // 构造函数,初始化栈顶为-1  DataType data[StackSize];int top;void Push(DataType x);DataType pop();int Empty();void GenerateAndPushRandomNumbers(); // 生成随机数并压入栈  void PopAndDisplay(int n); // 出栈并显示n个元素  void DisplayTop(); // 显示栈顶元素  
};
template <typename DataType>
void SeqStack<DataType>::Push(DataType x) {if (top == StackSize - 1) throw "Overflow";data[++top] = x;
}
template <typename DataType>
DataType SeqStack<DataType>::pop() {if (top == -1) throw "下溢";return data[top--];
}
template <typename DataType>
int SeqStack<DataType>::Empty() {return top == -1;
}
template <typename DataType>
void SeqStack<DataType>::GenerateAndPushRandomNumbers() {srand(time(nullptr)); // 初始化随机数种子  for (int i = 0; i < 10; ++i) {int randomNumber = rand() % 100; // 生成0到99的随机数  Push(randomNumber);}
}
template <typename DataType>
void SeqStack<DataType>::PopAndDisplay(int n) {for (int i = 0; i < n; ++i) {DataType poppedElement = pop();cout << "Popped element: " << poppedElement << endl;}
}
template <typename DataType>
void SeqStack<DataType>::DisplayTop() {if (!Empty()) {cout << "Top element: " << data[top] << endl;}else {cout << "Stack is empty." << endl;}
}
int main() {SeqStack<int> stack;stack.GenerateAndPushRandomNumbers(); // 生成随机数并压入栈  // 显示栈内元素  cout << "Elements in the stack (from top to bottom):";for (int i = stack.top; i >= 0; --i) {cout << " " << stack.data[i];}cout << endl;int n;cout << "Enter the number of elements to pop (1-10): ";cin >> n;stack.PopAndDisplay(n); // 出栈并显示元素  stack.DisplayTop(); // 显示栈顶元素  return 0;
}

http://www.lryc.cn/news/338240.html

相关文章:

  • 【WSL】在WIN11安装并使用Linux子系统(Ubuntu)
  • 【vim 学习系列文章 20 -- a:mode 的值有哪些?】
  • sed命令多行处理
  • Secure Copy Protocol or SCP - 安全拷贝协议
  • Java面试题:什么是Java的值传递和引用传递?列举其应用场景,并说明其特点
  • Java 基于微信小程序的智能停车场管理小程序
  • python基础——类型注解【变量,函数,Union】
  • 人工智能研究生前置知识—科学计算库numpy
  • element UI 设置type=“textarea“ 禁止输入框缩放
  • Rust腐蚀服务器常用参数设定详解
  • 无人机巡检技术革命性变革光伏电站运维管理
  • 【学习】软件信创测试中,如何做好兼容性适配
  • 阿里云ACK k8s集群迁移
  • 1.3 字符设备驱动
  • 计算机毕业设计springboot小区物业报修管理系统m8x57
  • 深度学习体系结构——CNN, RNN, GAN, Transformers, Encoder-Decoder Architectures算法原理与应用
  • js 数字的常用方法梳理
  • STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978(5)
  • Objective-C学习笔记(block,协议)4.10
  • AD7982BRMZRL7 二进制 500kSPS 模数转换芯片 ADI
  • 采集某新闻网资讯网站保存PDF
  • 03攻防世界-unserialize3
  • 蓝桥杯备考随手记: 常见的二维数组问题
  • Java | Leetcode Java题解之第28题找出字符串中第一个匹配项的下标
  • 【数据结构与算法】:二叉树经典OJ
  • uniapp——长按识别二维码
  • 云服务器环境web环境搭建之JDK、redis、mysql
  • 第1章 计算机网络体系结构
  • Docker之自定义镜像上传至阿里云
  • 《深入Linux内核架构》第2章 进程管理和调度 (2)