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

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

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

相关文章

Flutter 开发中踩坑笔记总汇

Flutter 踩坑笔记总汇 本篇主要是收集汇总开发过程中遇到的小困惑&#xff0c;都是些比较常见的问题。后续开发中遇到&#xff0c;也会持续更新在这里。 1、Flutter Packages upgrade后任务进入阻塞状态 问题&#xff1a;无法更新下载插件库。 解决&#xff1a;配置flutter官…

力扣(103、236、104)

103. 二叉树的锯齿形层序遍历 题目大意&#xff1a;将原先的层次遍历改为蛇形遍历&#xff0c;那么我们需要在102. 二叉树的层序遍历的基础上进行改进&#xff0c;首先蛇形走位&#xff08;先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层…

SQL注入攻击与防范:案例分析与最佳实践

SQL注入是一种常见的安全漏洞&#xff0c;攻击者利用此漏洞向应用程序的数据库发送恶意SQL查询&#xff0c;以执行未经授权的操作或获取敏感数据。以下是一些预防SQL注入的常见方法&#xff1a; 使用参数化查询&#xff1a;使用参数化查询可以有效防止SQL注入攻击。参数化查询将…

C语言几个比较实用的宏定义

最近同事远程调试设备&#xff0c;为了定位问题临时发布了好几个版本&#xff0c;有些版本号改了有些没改&#xff0c;结果调试完&#xff0c;准备备份版本的时候&#xff0c;忘了哪个版本是最新的了 这里介绍几个比较使用的宏&#xff0c;把编译时间加入到执行文件中&#xf…

k8s部署InfluxDB

&#xff08;作者&#xff1a;陈玓玏&#xff09; 1. 拉取镜像 docker pull influxdb #拉取镜像 docker run -d influxdb:latest #后台运行容器 docker exec -it 89b /bin/bash #进入容器&#xff0c;89b是容器ID的前三位 cd /usr/bin #进入容器后&#xff0c;进入此文件夹…

SEO是什么?网站为什么要做SEO?#川圣SEO#蜘蛛池

baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; baidu搜索&#xff1a;如何联系八爪鱼SEO&#xff1f; SEO&#xff0c;即搜索引擎优化&#xff0c;是一种通过了解和利用搜索引擎的运作规则来提高网站在搜索结果中…

关于go中的select

笔记仓库&#xff1a;gitee.com/xiaoyinhui 代码中的解释纯个人理解&#xff0c;有不对的望指出 package testsimport ("fmt""testing" )var uCnt int 0func TestSelece(t *testing.T) {// 对于 select 语句&#xff0c;在进入该语句时&#xff0c;会按源…

Flink技术简介与入门实践

架构简介 Flink 是一个分布式流处理和批处理计算框架&#xff0c;具有高性能、容错性和灵活性。下面是 Flink 的架构概述&#xff1a; JobManager&#xff1a;JobManager 是 Flink 集群的主节点&#xff0c;负责接收和处理用户提交的作业。JobManager 的主要职责包括&#xff1…

即插即用卷积之TalkingHeadAttn

import torch from torch import nn""" 个代码实现了一个名为"TalkingHeadAttn"的自注意力模块(Self-Attention),主要用于增强神经网络在输入序列上的特征表示和建模。以下是这个自注意力模块的关键部分和特点:多头自注意力:这个模块使用了多头自…

Android13 客制化U盘挂载路径

Android 8.1 OTG U盘无法显示在系统文件管理的修改_mtk 屏蔽当贝市场u盘弹框-CSDN博客 Android 8.1 客制化OTG U盘的挂载路径名称_安卓8.1 u盘挂载目录-CSDN博客

Tomacat下载并且手动自动部署Web项目

Tomacat下载并且手动自动部署Web项目 Tomcat的简介Tomcat的作用Tomcat的下载Tomcat 部署1、环境准备2、手动部署项目3、自动部署项目&#xff08;IDEA&#xff09; ⭐ 前言 ⭐ 本篇文章主要介绍 Tomacat下载部署Web项目的详细使用以及部分理论知识 Tomcat的简介 Tomcat 服务…

硬盘分区怎么恢复数据 硬盘分区如何恢复原来的数据

硬盘分区是我们在使用电脑时经常会遇到的问题&#xff0c;而且很多人都会因为误操作或者其他原因导致硬盘分区数据丢失。这时候&#xff0c;我们就需要知道如何恢复硬盘分区的数据了。 首先&#xff0c;我们需要知道硬盘分区数据丢失的原因。一般来说&#xff0c;硬盘分区数据丢…

setTimeout+Promise+Async输出顺序?

注明&#xff1a;本文不涉及Nodejs执行机制 同步 && 异步 什么是异步&#xff0c;什么是同步&#xff0c;我不多说&#xff0c;我就通过小故事来讲讲吧。 同步&#xff1a;你打电话去书店订书&#xff0c;老板说我查查&#xff0c;你不挂电话在等待&#xff0c;老板把…

基于Node.js 和 FFmpeg构建自动化脚本用来转码视频

这个脚本将监控一个特定的目录&#xff0c;自动转码新添加的视频文件&#xff0c;并将转码后的视频保存到指定目录。 准备环境 安装 Node.js: 访问 Node.js 官网&#xff0c;下载并安装适合你操作系统的 Node.js 版本。 安装 FFmpeg(不清楚的可以看我的上篇博客里有详细的安装…

Memcached 数据库介绍

一 Memcached 介绍 &#xff08;一&#xff09;Memcached 简单介绍 弊端 不能持久化 &#xff08;不支持存在硬盘里&#xff09; Memcached 只支持能序列化的数据类型&#xff0c;不支持持久化&#xff0c;基于Key-Value的内存缓存系统 memcached 虽然没有像redis所具备的…

【Golang星辰图】图像和多媒体处理的创新之路:Go语言的无限潜能

图像处理、音视频编辑&#xff0c;Go语言不再局限&#xff1a;揭秘opencv和goav的威力 前言: 在当今的数字时代&#xff0c;图像处理和多媒体技术在各个领域中的应用越来越广泛。无论是计算机视觉、图像处理还是音视频处理&#xff0c;选择合适的库和工具至关重要。本文将介绍…

宏任务及微任务

js有一个基于事件循环的并发模型&#xff0c;事件循环负责执行代码、收集和处理事件&#xff0c;以及执行队列中的子任务。js是单线程的&#xff08;某一刻只能执行一行代码&#xff09;&#xff0c;为了让耗时带啊不阻塞其他代码运行&#xff0c;设计了事件循环模型。 事件循环…

【Golang星辰图】 编织自动化魔法:使用 Go 语言中的自动化和部署工具构建可靠的基础设施

Go 语言中的自动化和部署&#xff1a;使用 Ansible、Docker、Kubernetes、Terraform、Jenkins、GitLab 和 Vault 的详细指南 前言&#xff1a; 自动化和部署是当今软件开发生命周期中不可或缺的环节。使用自动化工具可以提高效率、降低成本、减少人为错误&#xff0c;并使软件…

学生时期学习资源同步-1 第一学期结业考试题1

原创作者&#xff1a;田超凡&#xff08;程序员田宝宝&#xff09; 版权所有&#xff0c;引用请注明原作者&#xff0c;严禁复制转载

D-Star 寻路算法

D-Star 寻路算法 下面简写 D-Star 为 D* D算法&#xff1a;D 算法”的名称源自 Dynamic A Star,最初由Anthony Stentz于“Optimal and Efficient Path Planning for Partially-Known Environments”中介绍。它是一种启发式的路径搜索算法&#xff0c; 适合面对周围环境未知或者…