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

数据结构:顺序表(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

前言 学习资料&#xff1a; B站视频配套代码 cookbook 示例 参考源码&#xff1a;cookbook → 04-BuildEngineByONNXParser → pyTorch-ONNX-TensorRT 源码 C 代码量较多&#xff0c;已上传 GitHub OpenCV 安装&#xff1a; apt install libopencv-dev&#xff08;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不同&#xff0c;Linux严格区分大小写的&#xff0c;包括文件名和目录名、命令、命令选项、配置文件设置选项等。 例如&#xff0c;Win7 系统桌面上有文件夹叫做Test&#xff0c;当我们在桌面上再新建一个名为 test 的文件夹时&#xff0c…...

《探索虚拟与现实的边界:VR与AR谁更能引领未来?》

引言 在当今数字时代,虚拟现实(VR)和增强现实(AR)技术正以惊人的速度发展,并逐渐渗透到我们的日常生活中。它们正在重新定义人与技术、人与环境之间的关系,同时也为各行各业带来了全新的可能性。然而,究竟是VR还是AR更有潜力改变未来?本文将围绕这一问题展开深入探讨。…...

C++ 获取上一级文件夹路径

我们可能会经常遇到文件所在文件夹路径的问题&#xff0c;虽然各大平台也有提供方便快捷的API来实现&#xff0c;但是如果脱离平台本身&#xff0c;或者想实现跨平台的话&#xff0c;可以考虑用纯C的代码来实现这一需求 示例代码 #include <string> #include <ios…...

Apache Pulsar的分布式集群模式构建

1. 准备环境 6台带jdk8的Linux服务器&#xff08;CentOS7为例&#xff09; ip分别为&#xff1a; 主机名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.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口&#xff0c;只不过窗口的内容固定显示…...

Java中介者模式剖析及使用场景

中介者模式 一、介绍二、智能家居系统项目实现三、总结1.优点2.缺点3.使用经验4.Spring框架类似使用思想 一、介绍 介者模式是一种行为型设计模式&#xff0c;它允许对象之间通过一个中介者对象进行通信&#xff0c;而不是直接相互引用。将多对多的关系转化为一对多的关系&…...

ElevenLabs用AI为Sora文生视频模型配音 ,景联文科技提供高质量真人音频数据集助力生成逼真音效

随着Open AI公司推出的Sora文生视频模型惊艳亮相互联网&#xff0c;AI语音克隆创企ElevenLabs又为Sora的演示视频生成了配音&#xff0c;所有的音效均由AI创造&#xff0c;与视频内容完美融合。 ElevenLabs的语音克隆技术能够从一分钟的音频样本中创建逼真的声音。为了实现这一…...

Go语言基础

Go的数据类型定义 //运行第一个程序package main func main(){print("Hello World") }在GO语言中&#xff0c;一个程序只能有一个main包&#xff0c;对应只能有一个main方法&#xff0c;若无法满足这个条件&#xff0c;编译时将会报错。注释方式与PHP相同 import的使…...

IOS覆盖率报告info文件解读

一&#xff0c;IOS覆盖率报告的生成 在做前端精准测试的时候&#xff0c;对于iOS端&#xff0c;通常会做如下操作&#xff1a; &#xff08;1&#xff09;合并覆盖率数据 如下操作&#xff1a; xcrun llvm-profdata merge coverage_file1657885040728.profraw coverage_fil…...

爬虫实战——scrapy框架爬取多张图片

scrapy框架的基本使用&#xff0c;请参考我的另一篇文章&#xff1a;scrapy框架的基本使用 起始爬取的网页如下&#xff1a; 点击每张图片&#xff0c;可以进入图片的详情页&#xff0c;如下&#xff1a; 代码实现&#xff1a; 项目文件结构如下 img_download.py文件代码 im…...

LLVM TableGen 系统学习笔记

Basic TableGen 系统可以帮助记录领域特定的信息。它也可以认为是一种小型的编译系统。 TableGen 责负分析文件&#xff0c; 分析结果交给领域特定的后端进行处理。 重要的概念 records 一个 record 有一个独立的名称&#xff0c;一系列值和一系列父类。 它保存了特定领域…...

基于stm32的流水灯设计

1基于stm32的流水灯设计[proteus仿真] 速度检测系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于51单片机的自行车测速系统设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&#xffe5;&#xff0c…...

kotlin图片合成和压缩

kotlin图片合成和压缩 之前的方法是继承AsyncTask 在doInBackground 里面去做压缩的操作&#xff0c;然后用 publishProgress 切到主线程里面更新 新方法是在协程里的去做 class ImageService {private fun getSumWidths(bitmaps: ArrayList<Bitmap>): Int {var sumWid…...

Java学习笔记004——接口概念理解及意义

一个类中有抽象方法&#xff0c;则必须声明为abstract&#xff08;做为抽象类&#xff09;&#xff0c;抽象类不能实例化。子类继承抽象类&#xff0c;必须对所有的抽象方法重写&#xff0c;否则依然有抽象方法&#xff0c;还是抽象的&#xff0c;无法实例化。故抽象类常做为基…...

MT笔试题

前言 某团硬件工程师的笔试题&#xff0c;个人感觉题目的价值还是很高的&#xff0c;分为选择题和编程题&#xff0c;选择题考的是嵌入式基础知识&#xff0c;编程题是两道算法题&#xff0c;一道为简单难度&#xff0c;一道为中等难度 目录 前言选择题编程题 选择题 C语言中变…...

50道SQL面试题

50道SQL面试题 有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 环境 -- ---------------------------- -- Table structure for teacher -- ---------------------------- DROP TABLE IF EXISTS teacher; CREATE TABLE teacher (t_id varchar(20) …...

2024蓝桥杯每日一题(双指针)

一、第一题&#xff1a;牛的学术圈 解题思路&#xff1a;双指针贪心 仔细思考可以知道&#xff0c;写一篇综述最多在原来的H指数的基础上1&#xff0c;所以基本方法可以是先求出原始的H指数&#xff0c;然后分类讨论怎么样提升H指数。 【Python程序代码】 n,l map(int,…...

C#与VM二次开发实战:从零构建工业视觉上位机应用

1. 工业视觉上位机开发入门指南 第一次接触工业视觉上位机开发时&#xff0c;我被各种专业术语搞得晕头转向。VM&#xff08;VisionMaster&#xff09;作为国内主流的视觉平台&#xff0c;其实用C#进行二次开发并没有想象中那么难。这里分享下我的实战经验&#xff0c;帮助大家…...

避坑指南:STM32 DAC输出缓冲到底开不开?实测对比0V精度与驱动能力

STM32 DAC输出缓冲配置实战&#xff1a;精度与驱动能力的深度权衡 在嵌入式系统设计中&#xff0c;数字模拟转换器&#xff08;DAC&#xff09;的性能直接影响着模拟信号输出的质量。许多工程师在使用STM32的DAC功能时&#xff0c;往往忽略了一个关键配置项——输出缓冲&#x…...

MATLAB实战:手把手教你搭建机载SAR正侧视回波仿真环境(附完整代码)

MATLAB实战&#xff1a;从零构建机载SAR正侧视回波仿真系统 在雷达信号处理领域&#xff0c;合成孔径雷达&#xff08;SAR&#xff09;仿真一直是工程师和研究人员必须掌握的核心技能。不同于传统雷达&#xff0c;SAR通过运动平台合成虚拟大孔径天线&#xff0c;实现高分辨率成…...

DiffLinker实战:从环境部署到3D评估的分子骨架跃迁全流程解析

1. DiffLinker环境部署与基础配置 DiffLinker作为一款基于E3等变3D条件扩散模型的分子骨架跃迁工具&#xff0c;其环境部署过程需要特别注意依赖项的版本兼容性。我实测发现&#xff0c;使用conda创建独立环境能有效避免与其他化学信息学工具的冲突。 首先克隆官方仓库&#xf…...

如何在Mac上免费解锁百度网盘SVIP下载速度:完整指南

如何在Mac上免费解锁百度网盘SVIP下载速度&#xff1a;完整指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘缓慢的下载速度而烦恼吗…...

Keil5库文件打包避坑指南:为什么你的Lib文件宏定义无法修改?

Keil5库文件打包避坑指南&#xff1a;为什么你的Lib文件宏定义无法修改&#xff1f; 当你花费数小时将精心编写的代码打包成Keil5库文件&#xff08;.lib&#xff09;&#xff0c;却发现头文件中的宏定义修改完全无效时&#xff0c;那种挫败感每个嵌入式开发者都深有体会。这看…...

【二】2D测量 Metrology——set_metrology_object_param()算子参数详解与实战调优

1. set_metrology_object_param()算子基础解析 在工业视觉检测中&#xff0c;精确的2D测量往往决定着产品质量控制的成败。Halcon的Metrology工具包提供了一套完整的解决方案&#xff0c;其中set_metrology_object_param()就像测量工程师的瑞士军刀&#xff0c;负责微调每个测量…...

AIVideo问题解决:常见报错处理与参数调优,让视频生成更稳定

AIVideo问题解决&#xff1a;常见报错处理与参数调优&#xff0c;让视频生成更稳定 1. 常见报错分析与解决方案 1.1 部署阶段报错处理 报错1&#xff1a;环境变量配置无效 当修改.env文件后视频生成仍失败时&#xff0c;通常是因为配置未生效。正确的处理流程应该是&#x…...

Qwen3-14B赋能内容创作团队:私有部署后批量生成营销文案实战案例

Qwen3-14B赋能内容创作团队&#xff1a;私有部署后批量生成营销文案实战案例 1. 营销文案创作的痛点与解决方案 在当今快节奏的数字营销环境中&#xff0c;内容创作团队面临着巨大压力。每天需要产出大量高质量的营销文案&#xff0c;包括产品描述、社交媒体帖子、广告文案等…...

手势识别实战:从Light-HaGRID轻量数据集到多平台部署

1. 手势识别与Light-HaGRID数据集入门 第一次接触手势识别项目时&#xff0c;我被海量数据需求吓到了。直到发现Light-HaGRID这个轻量数据集&#xff0c;才明白原来入门可以这么简单。这个数据集最吸引我的地方在于&#xff0c;它把原始716GB的HaGRID数据压缩到18GB&#xff0…...