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

C++ 9.27

作业:

将之前实现的顺序表、栈、队列都更改成模板类

Stack

#include <iostream>
using namespace std;

template <typename T>
class Stack {
private:
    T* arr;      // 存储栈元素的数组
    int top;     // 栈顶索引
    int capacity; // 栈的容量

public:
    Stack(int size) {
        arr = new T[size]; 
        capacity = size;
        top = -1; // 初始化栈顶索引
    }

    ~Stack() {
        delete[] arr; // 释放内存
    }

    void push(T x) {
        if (top == capacity - 1) {
            cout << "栈溢出" << endl;
            return;
        }
        arr[++top] = x; 
    }

    void pop() {
        if (top == -1) {
            cout << "栈为空" << endl;
            return;
        }
        top--;
    }

    T peek() {
        if (top == -1) {
            cout << "栈为空" << endl;
            return T(); // 返回默认值
        }
        return arr[top]; // 返回栈顶元素
    }

    bool isEmpty() {
        return top == -1; // 检查栈是否为空
    }

    int size() {
        return top + 1; // 返回栈的大小
    }
};

int main() {
    Stack<int> stack(5); // 使用模板类
    stack.push(10);
    stack.push(20);
    cout << "栈顶元素: " << stack.peek() << endl;
    stack.pop();
    cout << "栈顶元素: " << stack.peek() << endl; 
    return 0;
}

Queue

 #include <iostream>
using namespace std;

template <typename T>
class Queue {
private:
    T* arr;      // 存储队列元素的数组
    int front; 
    int rear;  
    int capacity; // 队列的容量

public:
    Queue(int size) {
        arr = new T[size];
        capacity = size;
        front = 0;
        rear = -1; 
    }

    ~Queue() {
        delete[] arr; // 释放内存
    }

    void push(T x) {
        if (rear == capacity - 1) {
            cout << "队列溢出" << endl;
            return;
        }
        arr[++rear] = x; // 将元素插入队列
    }

    void pop() {
        if (front > rear) {
            cout << "队列为空" << endl;
            return;
        }
        front++; 
    }

    T frontElement() {
        if (front > rear) {
            cout << "队列为空" << endl;
            return T(); // 返回默认值
        }
        return arr[front]; 
    }

    bool isEmpty() {
        return front > rear; // 检查队列是否为空
    }

    int size() {
        return rear - front + 1; // 返回队列的大小
    }
};

int main() {
    Queue<int> queue(5); // 使用模板类
    queue.push(10);
    queue.push(20);
    cout << "队列前端元素: " << queue.frontElement() << endl;
    queue.pop();
    cout << "队列前端元素: " << queue.frontElement() << endl;
    return 0;
}

Xmind

 

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

相关文章:

  • 让具身智能更快更强!华东师大上大提出TinyVLA:高效视觉-语言-动作模型,遥遥领先
  • Excel 获取某列不为空的值【INDEX函数 | SMALL函数或 LARGE函数 | ROW函数 | ISBLANK 函数】
  • 爆火!大模型算法岗 100 道面试题全解析,赶紧收藏!
  • Python画笔案例-068 绘制漂亮米
  • 得物App荣获国家级奖项,正品保障引领潮流电商新风尚
  • 【BurpSuite】SQL注入 | SQL injection(1-2)
  • ThreadPoolExecutor有哪些核心的配置参数?
  • 关于工作虚拟组的一些思考
  • 【Redis入门到精通六】在Spring Boot中集成Redis(含配置和操作演示)
  • 【CSS】透明度 、过渡 、动画 、渐变
  • 尚硅谷vue3+TypeScript笔记大全
  • New major version of npm available! 8.3.1 -> 10.8.3 报错
  • Python(七)- 文件操作
  • Docker技术深度解析与实践案例
  • llama_deploy
  • 平衡二叉搜索树插入的实现
  • ROS理论与实践学习笔记——2 ROS通信机制之通信机制实践
  • CDGA|数据治理:策略与价值的深度融合
  • 49. 建模软件绘制3D场景(Blender)
  • 如何使用 DomCrawler 进行复杂的网页数据抓取?
  • 维修服务品牌小程序渠道客获
  • 【全新课程】正点原子《基于GD32 ARM32单片机项目实战入门》培训课程上线!
  • Kafka系列之:安装使用kafka_exporter详细步骤
  • Paddlets时间序列集成模型回测实战:MLPRegressor、NHiTSModel与RNNBlockRegressor
  • 【anki】显示 “连接超时,请更换网络后重试” 怎么办
  • 第一批学习大模型的程序员,已经碾压同事了,薪资差距都甩出一条街了...
  • Unity NetCode 客户端连接不上服务器,局域网模式 Failed to connect to server.
  • C++远端开发环境安装(centos7)
  • LaTeX 编辑器-TeXstudio
  • [深度学习]循环神经网络