赞
踩
2.随机产生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<DataType>* next;
- };
- template <typename DataType>
- class LinkStack {
- private:
- Node<DataType>* top;
- public:
- LinkStack() : top(nullptr) {} // 构造函数初始化栈顶指针
- void Push(DataType x);
- DataType Pop();
- void GenerateAndPushRandomNumbers(); // 生成随机数并压入链栈
- void DisplayStack(); // 显示链栈元素
- void PopAndDisplay(int n); // 出栈n个元素并显示
- void DisplayTop(); // 显示栈顶元素
- };
- template <typename DataType>
- void LinkStack<DataType>::Push(DataType x) {
- Node<DataType>* newNode = new Node<DataType>;
- newNode->data = x;
- newNode->next = top;
- top = newNode;
- }
- template <typename DataType>
- DataType LinkStack<DataType>::Pop() {
- if (top == nullptr) {
- throw "下溢";
- }
- Node<DataType>* temp = top;
- DataType x = top->data;
- top = top->next;
- delete temp;
- return x;
- }
- template <typename DataType>
- void LinkStack<DataType>::GenerateAndPushRandomNumbers() {
- srand(time(nullptr)); // 初始化随机数种子
- for (int i = 0; i < 10; ++i) {
- int randomNumber = rand() % 100; // 生成0到99的随机数
- Push(randomNumber);
- }
- }
- template <typename DataType>
- void LinkStack<DataType>::DisplayStack() {
- Node<DataType>* current = top;
- cout << "Elements in the stack (from top to bottom): ";
- while (current != nullptr) {
- cout << current->data << " ";
- current = current->next;
- }
- cout << endl;
- }
- template <typename DataType>
- void LinkStack<DataType>::PopAndDisplay(int n) {
- for (int i = 0; i < n; ++i) {
-
- DataType poppedElement = Pop();
- cout << "Popped element: " << poppedElement << endl;
- }
- }
- template <typename DataType>
- void LinkStack<DataType>::DisplayTop() {
- if (top != nullptr) {
- cout << "Top element: " << top->data << endl;
- }
- else {
- cout << "Stack is empty." << endl;
- }
- }
- int main() {
- LinkStack<int> stack;
- stack.GenerateAndPushRandomNumbers(); // 生成随机数并压入链栈
- stack.DisplayStack(); // 显示栈内元素
- int n;
- cout << "Enter the number of elements to pop (1-10): ";
- cin >> n;
- stack.PopAndDisplay(n); // 出栈并显示元素
- stack.DisplayTop(); // 显示栈顶元素
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。