C++ DAY6 作业

news2024/9/25 7:22:56

1.用模板类写顺序表

#include <iostream>

using namespace std;

#define MAXSIZE 10
template <typename T>
class Arr
{
    T *data =NULL;
    int len = 0;
public:
    //构造函数
    Arr():data(new T){}
    Arr(T a,int len):data(new T(a)),len(len){}
    //析构函数
    ~Arr(){delete data;}
    //向顺序表尾插元素
    void insert_data(Arr &a1,T a);
    //删除顺序尾删元素
    void delete_data(Arr &a1);
    //按照指定值查找元素
    int search_data(Arr &a1,T a);
    //遍历
    void output(Arr a1);

};

//尾插
template <typename T>
void Arr<T>::insert_data(Arr &a1,T a)
{
    //判满以及堆区地址是否创建
    if(a1.len == MAXSIZE || data == NULL)
    {
        return;
    }
    //尾插数据
    *(a1.data+a1.len) = a;
    a1.len++;
}
//尾删
template <typename T>
void Arr<T>::delete_data(Arr &a1)
{
    //判空
    if(a1.len == 0)
    {
        return;
    }
    //尾删
    a1.len--;
}
//按照指定值查找元素,返回index下标
template <typename T>
int Arr<T>::search_data(Arr &a1,T a)
{
    //判空
    if(a1.len == 0)
    {
        return -1;
    }
    //查找
    for(int index=0;index<len;index++)
    {
        if(*(a1.data+index) == a)
        {
            return index;
        }

    }
    return -1;
}
//遍历
template <typename T>
void Arr<T>::output(Arr a1)
{
    //判空
    if(a1.len == 0)
    {
        return;
    }
    for(int i=0; i<len ;i++)
    {
        cout << *(a1.data+i) << "\t";
    }
    cout << endl;
}



int main()
{
    Arr<int> a1;
    cout << "头插数据:" << endl;
    a1.insert_data(a1,1);
    a1.insert_data(a1,2);
    a1.insert_data(a1,3);
    a1.insert_data(a1,4);
    a1.insert_data(a1,5);
    cout << "遍历结果:" << endl;
    a1.output(a1);
    cout << "尾删数据:" << endl;
    a1.delete_data(a1);
    cout << "遍历结果:" << endl;
    a1.output(a1);
    cout << "查找元素:" << endl;
    int index = a1.search_data(a1,3);
    if(index == -1)
    {
        cout << "查找元素不存在" << endl;
    }else {
        cout << "下标为: " << index << endl;
    }
    return 0;
}

2.思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1352830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(一)CarPlay集成开发之概述与环境篇

系列文章目录 第一章 CarPlay集成开发之概述与环境篇 文章目录 系列文章目录概述开发环境依赖项总结 概述 CarPlay是由苹果公司开发的一款集成在iOS系统中&#xff0c;用于运行在已完成对接该系统的汽车中控台&#xff0c;仪表盘上的车载系统&#xff0c;该系统通过USB或者WI…

智能求职助手 - ChatGPT 与 RPA 技术的完美结合

随着全球互联网行业的快速发展&#xff0c;互联网求职市场也变得越来越竞争激烈。在互联网求职寒冬的背景下&#xff0c;一位热心的开发者创造了一个令人惊叹的开源项目&#xff0c;结合了 ChatGPT 和 RPA 技术&#xff0c;为求职者提供了一键自动投递简历的便捷解决方案。 项…

电路板设计很难吗?十分钟带你起飞

1、写在前面 其实在20年前&#xff0c;学习资源相对都固化在大学校园里&#xff0c;差一点的学校&#xff0c;学生们想学点真本事&#xff0c;是非常困难的&#xff0c;还好我读书的时候&#xff0c;互联网开始起步腾飞&#xff0c;优酷&#xff0c;土豆兴起&#xff0c;有人开…

【LeetCode:69. x 的平方根 | 二分】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

《深入理解JAVA虚拟机笔记》对象的创建和访问、对象头

对象的创建 当 Java 虚拟机遇到一条字节码 new 指令时&#xff0c;首先将去检查这个指令的参数是否能做常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有&#xff0c;那必须先执行相应的类加载过程。 在类加载…

xshell登录不上虚拟机了

电脑重启后连不上本地虚机了 1、关闭防火墙 2 虚拟机ping得到主机&#xff0c;而主机ping不到虚拟机的解决办法 原因&#xff1a;可能是主机的网络适配器没有调好 首先&#xff0c;找到虚拟机的网络配置器 根据虚拟机的IP信息修改主机虚拟适配器VMnet8 修改ip使得和虚拟机连…

【力扣100】39.组合总和

添加链接描述 class Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:def backtrack(path,target,res,index):if target0:res.append(path[:])returnif target<0:return for i in range(index,len(candidates)):if target&g…

借助libcurl实现ftp文件上传,断点续传demo梳理。

公司业务&#xff0c;需要实现一个ftp大文件上传的功能&#xff0c;简单搭建一个ftp服务器&#xff0c;首先研究demo&#xff0c;以及断点上传的功能。 1&#xff1a;首先了解文件上传相关协议&#xff0c;ftp&#xff0c;sftp或者基于http&#xff0c;其他自己实现等。 2&am…

图像分割-漫水填充法 floodFill

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 本文的C#版本请访问&#xff1a;图像分割-漫水填充法 floodFill (C#&#xff09;-CSDN博客 FloodFill方法是一种图像处理算法&#…

最新Java详细安装教程

Java详细安装教程 JDK与JRE区别java官网链接java安装配置环境验证java安装成功 文章参加https://zhuanlan.zhihu.com/p/612846156 各位小伙伴想要博客相关资料的话关注公众号&#xff1a;chuanyeTry即可领取相关资料&#xff01; JDK与JRE区别 对于安装Java的新手&#xff0c;…

Hive09_函数

HIVE函数 系统内置函数 1&#xff09;查看系统自带的函数 hive> show functions;2&#xff09;显示自带的函数的用法 hive> desc function upper;3&#xff09;详细显示自带的函数的用法 hive> desc function extended upper;hive函数分类 1、UDF&#xff1a;用…

理解 RPC 与 Protobuf:完整指南

一、Protobuf 数据格式简析 Protobuf 是什么&#xff1f; 在数据密集型应用领域&#xff0c;Google 开发的 Protobuf 作为一种高效数据编码方式而广受欢迎。它胜任于 JSON 及 XML 对比&#xff0c;不仅在体积和速度上表现出色&#xff0c;而且其结构化方式优化了网络传输中的…

组织权限收集表

在组织角色收集过程中&#xff0c;主要分为两个重要环节&#xff1a;用户信息的收集和角色定义。其中&#xff0c;用户信息的收集相对简单&#xff0c;而角色定义则更为复杂。 在我们的项目中&#xff0c;权限涉及页面权限、按钮权限和数据权。为了确保每个角色具备适当的权限…

数字信号处理期末复习——计算小题(二)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

SQL 在已有表中修改列名的方法

文章目录 1. MySQL2. SQL Server3. Oracle / PostgreSQL Question&#xff1a; 假设有一张表 StudentInfo&#xff0c;表中有一个列名是 Student_Name &#xff0c;想要把这个列名改成 StudentName 应该如何操作&#xff1f; 建表语句如下&#xff1a; --建表 if object_id(S…

零知识证明(zk-SNARK)- groth16(一)

全称为 Zero-Knowledge Succinct Non-Interactive Argument of Knowledge&#xff0c;简洁非交互式零知识证明&#xff0c;简洁性使得运行该协议时&#xff0c;即便 statement 非常大&#xff0c;它的 proof 大小也仅有几百个bytes&#xff0c;并且验证一个 proof 的时间可以达…

算法28:力扣64题,最小路径和------------样本模型

题目&#xff1a; 给定一个二维数组matrix&#xff0c;一个人必须从左上角出发&#xff0c;最后到达右下角 。沿途只可以向下或者向右走&#xff0c;沿途的数字都累加就是距离累加和 * 返回累加和最小值 思路&#xff1a; 1. 既然是给定二维数组matrix&#xff0c;那么二维数…

LDD学习笔记 -- Linux内核模块

LDD学习笔记 -- 内核模块 简介LKM类型Static Linux Kernel ModuleDynamic Linux Kernel ModuleLKM编写语法 syntax详细描述内核头文件用户空间头文件Module Initialization FunctionModule Cleanup FunctionKeyword & Tag宏 __init __exitLKM入口注册Module Metadate&#…

使用Matplotlib模拟绘制北京上海气温变化折线图

02 模拟北京上海气温变化折线图 通过本练习&#xff0c;可以掌握如何在一个坐标系中展示多个折线图&#xff0c;以及如何修改折线图的颜色和样式&#xff0c;以及如何设置和显示图例。 在一个坐标系中绘制两条折线 要在一个坐标系中绘制两条这些&#xff0c;我们只需要进行两…

Python open函数详解:打开指定文件与 readline和readlines函数:按行读取文件

Python open函数详解&#xff1a;打开指定文件 掌握了各种操作目录字符串或目录的函数之后&#xff0c;接下来可以准备读写文件了。在进行文件读写之前&#xff0c;首先要打开文件。 Python 提供了一个内置的 open() 函数&#xff0c;该函数用于打开指定文件。 open() 函数的…