数据结构:顺序表(C++实现)
1 头文件 SeqList.h
//SeqList.h
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cassert>
using namespace std;
class SeqList
{
public://初始化SeqList();//销毁~SeqList();//头插void PushFront(int data);//头删void PopFront();//尾插void PushBack(int data);//尾删void PopBack();//打印void Print();//寻找int* Find(int data);//插入void Insert(int pos, int data);//清除void Erase(int data);//检查容量void Check();
private://动态数组int* ptr;//数组索引int index;//数组容量int capacity;
};
2 源文件
2.1 SeqList.cpp(函数)
//SeqList.cpp
#include "SeqList.h"
//练习顺序表
//初始化
SeqList::SeqList():ptr(nullptr) //创建变量时即给指针赋值为空指针
{index = 0;capacity = 0;
}
//销毁
SeqList::~SeqList()
{if (ptr!=nullptr){delete[]ptr;ptr = nullptr;capacity = 0;index = 0;cout << "~SeqList Destroyed" << endl;}
}
//头插
void SeqList::PushFront(int data)
{Check();for (int i = index - 1; i >= 0; i--){ptr[i + 1] = ptr[i];}ptr[0] = data;index++;
}
//头删
void SeqList::PopFront()
{for (int i = 1; i < index; i++){ptr[i - 1] = ptr[i];}index--;
}
//尾插
void SeqList::PushBack(int data)
{Check();assert(ptr);ptr[index++] = data;
}
//尾删
void SeqList::PopBack()
{assert(index >= 0);index--;
}
//打印
void SeqList::Print()
{for (int i = 0; i < index; i++){cout << ptr[i] << " ";}cout << endl;
}
//寻找
int* SeqList::Find(int data)
{for (int i = 0; i < index; i++){if (ptr[i] == data){return ptr + i;}}return nullptr;
}
//插入
void SeqList::Insert(int pos, int data)
{assert(pos > 0);Check();for (int i = index - 1; i >= pos - 1; i--){ptr[i + 1] = ptr[i];}ptr[pos-1] = data;index++;
}
//清除
void SeqList::Erase(int data)
{int flag = 1;for (int i = 0; i < index; i++){if (ptr[i] == data){for (int j = i; j <index; j++){ptr[j] = ptr[j + 1];}index--;flag = 0;}}if (flag){cout << "该元素不存在" << endl;}
}
//检查容量
void SeqList::Check()
{if (ptr == nullptr || index == capacity){int new_capcaity = (ptr == nullptr ? 4 : capacity * 2);//转移数据if (capacity != new_capcaity && capacity != 0){int* temp = new int[new_capcaity];for (int i = 0; i < index; i++){temp[i] = ptr[i];}delete[] ptr;ptr = temp;assert(ptr);capacity = new_capcaity;return;}ptr = new int[new_capcaity];capacity = new_capcaity;assert(ptr);}
}
2.2 test.cpp(测试,入口)
//test.cpp
#include"SeqList.h"
int main()
{SeqList a;a.PushBack(1);a.PushBack(2);a.PushBack(3);a.PushBack(4);a.PushBack(5);a.PushBack(6);a.PushBack(1);a.Print();a.PopBack();a.PopBack();a.PopBack();a.PopBack();a.Print();a.PushFront(1);a.PushFront(2);a.PushFront(9);a.Print();a.PopFront();a.Print();a.Insert(3, 7);cout<<a.Find(2)<<endl;cout<<a.Find(8)<<endl;a.Print();a.Insert(1, 8);a.Print();a.Erase(1);a.Print();a.Erase(1);return 0;
}
相关文章:
数据结构:顺序表(C++实现)
1 头文件 SeqList.h //SeqList.h #pragma once #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cassert> using namespace std; class SeqList { public://初始化SeqList();//销毁~SeqList();//头插void PushFront(int data);//头删void PopFront(…...
从零开始 TensorRT(7)C++ 篇:解析 ONNX
前言 学习资料: B站视频配套代码 cookbook 示例 参考源码:cookbook → 04-BuildEngineByONNXParser → pyTorch-ONNX-TensorRT 源码 C 代码量较多,已上传 GitHub OpenCV 安装: apt install libopencv-dev(1&…...
k8s集群的CA证书过期处理
文章目录 制作延期的CA证书获取CA全名准备签发申请配置生成新CA验证并替换CA 更新master组件的CA配置kube-apiserverkube-controller-managerkube-schedulerkube-admin检查证书过期时间 更新ServiceAccount secret更新node组件配置的CA更新kubelet连接配置签发kubelet自动申请的…...
linuxOPS基础_linux系统注意事项
Linux严格区分大小写 Linux 和Windows不同,Linux严格区分大小写的,包括文件名和目录名、命令、命令选项、配置文件设置选项等。 例如,Win7 系统桌面上有文件夹叫做Test,当我们在桌面上再新建一个名为 test 的文件夹时,…...
《探索虚拟与现实的边界:VR与AR谁更能引领未来?》
引言 在当今数字时代,虚拟现实(VR)和增强现实(AR)技术正以惊人的速度发展,并逐渐渗透到我们的日常生活中。它们正在重新定义人与技术、人与环境之间的关系,同时也为各行各业带来了全新的可能性。然而,究竟是VR还是AR更有潜力改变未来?本文将围绕这一问题展开深入探讨。…...
C++ 获取上一级文件夹路径
我们可能会经常遇到文件所在文件夹路径的问题,虽然各大平台也有提供方便快捷的API来实现,但是如果脱离平台本身,或者想实现跨平台的话,可以考虑用纯C的代码来实现这一需求 示例代码 #include <string> #include <ios…...
Apache Pulsar的分布式集群模式构建
1. 准备环境 6台带jdk8的Linux服务器(CentOS7为例) ip分别为: 主机名IP地址zookeeper1192.168.8.101zookeeper2192.168.8.102zookeeper3192.168.8.103pulsar1192.168.8.108pulsar2192.168.8.109pulsar3192.168.8.110 2. 下载Pulsar最新安…...
第三百八十六回
文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了Snackbar Widget相关的内容,本章回中将介绍TimePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口,只不过窗口的内容固定显示…...
Java中介者模式剖析及使用场景
中介者模式 一、介绍二、智能家居系统项目实现三、总结1.优点2.缺点3.使用经验4.Spring框架类似使用思想 一、介绍 介者模式是一种行为型设计模式,它允许对象之间通过一个中介者对象进行通信,而不是直接相互引用。将多对多的关系转化为一对多的关系&…...
ElevenLabs用AI为Sora文生视频模型配音 ,景联文科技提供高质量真人音频数据集助力生成逼真音效
随着Open AI公司推出的Sora文生视频模型惊艳亮相互联网,AI语音克隆创企ElevenLabs又为Sora的演示视频生成了配音,所有的音效均由AI创造,与视频内容完美融合。 ElevenLabs的语音克隆技术能够从一分钟的音频样本中创建逼真的声音。为了实现这一…...
Go语言基础
Go的数据类型定义 //运行第一个程序package main func main(){print("Hello World") }在GO语言中,一个程序只能有一个main包,对应只能有一个main方法,若无法满足这个条件,编译时将会报错。注释方式与PHP相同 import的使…...
IOS覆盖率报告info文件解读
一,IOS覆盖率报告的生成 在做前端精准测试的时候,对于iOS端,通常会做如下操作: (1)合并覆盖率数据 如下操作: xcrun llvm-profdata merge coverage_file1657885040728.profraw coverage_fil…...
爬虫实战——scrapy框架爬取多张图片
scrapy框架的基本使用,请参考我的另一篇文章:scrapy框架的基本使用 起始爬取的网页如下: 点击每张图片,可以进入图片的详情页,如下: 代码实现: 项目文件结构如下 img_download.py文件代码 im…...
LLVM TableGen 系统学习笔记
Basic TableGen 系统可以帮助记录领域特定的信息。它也可以认为是一种小型的编译系统。 TableGen 责负分析文件, 分析结果交给领域特定的后端进行处理。 重要的概念 records 一个 record 有一个独立的名称,一系列值和一系列父类。 它保存了特定领域…...
基于stm32的流水灯设计
1基于stm32的流水灯设计[proteus仿真] 速度检测系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于51单片机的自行车测速系统设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2¥,…...
kotlin图片合成和压缩
kotlin图片合成和压缩 之前的方法是继承AsyncTask 在doInBackground 里面去做压缩的操作,然后用 publishProgress 切到主线程里面更新 新方法是在协程里的去做 class ImageService {private fun getSumWidths(bitmaps: ArrayList<Bitmap>): Int {var sumWid…...
Java学习笔记004——接口概念理解及意义
一个类中有抽象方法,则必须声明为abstract(做为抽象类),抽象类不能实例化。子类继承抽象类,必须对所有的抽象方法重写,否则依然有抽象方法,还是抽象的,无法实例化。故抽象类常做为基…...
MT笔试题
前言 某团硬件工程师的笔试题,个人感觉题目的价值还是很高的,分为选择题和编程题,选择题考的是嵌入式基础知识,编程题是两道算法题,一道为简单难度,一道为中等难度 目录 前言选择题编程题 选择题 C语言中变…...
50道SQL面试题
50道SQL面试题 有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 环境 -- ---------------------------- -- Table structure for teacher -- ---------------------------- DROP TABLE IF EXISTS teacher; CREATE TABLE teacher (t_id varchar(20) …...
2024蓝桥杯每日一题(双指针)
一、第一题:牛的学术圈 解题思路:双指针贪心 仔细思考可以知道,写一篇综述最多在原来的H指数的基础上1,所以基本方法可以是先求出原始的H指数,然后分类讨论怎么样提升H指数。 【Python程序代码】 n,l map(int,…...
C#与VM二次开发实战:从零构建工业视觉上位机应用
1. 工业视觉上位机开发入门指南 第一次接触工业视觉上位机开发时,我被各种专业术语搞得晕头转向。VM(VisionMaster)作为国内主流的视觉平台,其实用C#进行二次开发并没有想象中那么难。这里分享下我的实战经验,帮助大家…...
避坑指南:STM32 DAC输出缓冲到底开不开?实测对比0V精度与驱动能力
STM32 DAC输出缓冲配置实战:精度与驱动能力的深度权衡 在嵌入式系统设计中,数字模拟转换器(DAC)的性能直接影响着模拟信号输出的质量。许多工程师在使用STM32的DAC功能时,往往忽略了一个关键配置项——输出缓冲&#x…...
MATLAB实战:手把手教你搭建机载SAR正侧视回波仿真环境(附完整代码)
MATLAB实战:从零构建机载SAR正侧视回波仿真系统 在雷达信号处理领域,合成孔径雷达(SAR)仿真一直是工程师和研究人员必须掌握的核心技能。不同于传统雷达,SAR通过运动平台合成虚拟大孔径天线,实现高分辨率成…...
DiffLinker实战:从环境部署到3D评估的分子骨架跃迁全流程解析
1. DiffLinker环境部署与基础配置 DiffLinker作为一款基于E3等变3D条件扩散模型的分子骨架跃迁工具,其环境部署过程需要特别注意依赖项的版本兼容性。我实测发现,使用conda创建独立环境能有效避免与其他化学信息学工具的冲突。 首先克隆官方仓库…...
如何在Mac上免费解锁百度网盘SVIP下载速度:完整指南
如何在Mac上免费解锁百度网盘SVIP下载速度:完整指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘缓慢的下载速度而烦恼吗…...
Keil5库文件打包避坑指南:为什么你的Lib文件宏定义无法修改?
Keil5库文件打包避坑指南:为什么你的Lib文件宏定义无法修改? 当你花费数小时将精心编写的代码打包成Keil5库文件(.lib),却发现头文件中的宏定义修改完全无效时,那种挫败感每个嵌入式开发者都深有体会。这看…...
【二】2D测量 Metrology——set_metrology_object_param()算子参数详解与实战调优
1. set_metrology_object_param()算子基础解析 在工业视觉检测中,精确的2D测量往往决定着产品质量控制的成败。Halcon的Metrology工具包提供了一套完整的解决方案,其中set_metrology_object_param()就像测量工程师的瑞士军刀,负责微调每个测量…...
AIVideo问题解决:常见报错处理与参数调优,让视频生成更稳定
AIVideo问题解决:常见报错处理与参数调优,让视频生成更稳定 1. 常见报错分析与解决方案 1.1 部署阶段报错处理 报错1:环境变量配置无效 当修改.env文件后视频生成仍失败时,通常是因为配置未生效。正确的处理流程应该是&#x…...
Qwen3-14B赋能内容创作团队:私有部署后批量生成营销文案实战案例
Qwen3-14B赋能内容创作团队:私有部署后批量生成营销文案实战案例 1. 营销文案创作的痛点与解决方案 在当今快节奏的数字营销环境中,内容创作团队面临着巨大压力。每天需要产出大量高质量的营销文案,包括产品描述、社交媒体帖子、广告文案等…...
手势识别实战:从Light-HaGRID轻量数据集到多平台部署
1. 手势识别与Light-HaGRID数据集入门 第一次接触手势识别项目时,我被海量数据需求吓到了。直到发现Light-HaGRID这个轻量数据集,才明白原来入门可以这么简单。这个数据集最吸引我的地方在于,它把原始716GB的HaGRID数据压缩到18GB࿰…...
