顺序表C++实现

C++线性表的顺序存储结构和链式存储结构 顺序存储结构 链式存储结构 阅读详情

seqLinkList

.h文件

#ifndef SEQLINKLIST_H
#define SEQLINKLIST_H
//顺序链表
#include<iostream>
using std::cout;
using std::endl;
using std::cin;
typedef int ElemType;
constexpr auto MAXSIZE = 20;

class seqLinkList
{
public:
	seqLinkList() { curLength = -1; }//保证下标从0开始变化
	~seqLinkList() { }//一定要写,不然要报错
	bool Empty();//查看是否为空表
	void ClearList();//清空列表元素
	void GetElem(int nPos, ElemType &elem);//获得第nPos位置的元素值,并返回给elem
	bool FindElem(int elem);//查找列表中是否有elem值得元素
	void Insert(ElemType elem);//默认在列表尾部插入elem元素
	void Insert(int nPos, ElemType elem);//在第nPos位置前插入值为elem的元素
	void Delete(int nPos, ElemType &elem);//删除第nPos位置的元素,并将其值返回给elem元素
	void Delete();//默认删除尾部的元素
	int Length();//返回列表长度
	void merge(seqLinkList &L);//将所有L中不在原列表的元素插入到原列表中
	void print();//打印列表
private:
	ElemType data[MAXSIZE];//存储列表的数组
	int curLength;//列表的当前长度
};

#endif // !SEQLINKLIST_H

SeqLinkList.cpp

#include"SeqLinkList.h"

//查看是否为空表
bool seqLinkList::Empty() {
	if (this->curLength==-1)
	{
		return true;
	}
	return false;
}

//返回列表长度
int seqLinkList::Length() {
	return curLength;
}

//获得第nPos位置的元素值,并返回给elem
void seqLinkList::GetElem(int nPos, ElemType &elem) {
	if (nPos > MAXSIZE|| nPos <= curLength)
	{
		cout << "Out of List Scale!";
		return;
	}
	elem = data[nPos];
}

//清空列表元素
void seqLinkList::ClearList() {
	if (!Empty())
	{
		for (int i = 0; i <= this->Length(); i++)
			data[i] = 0;
	}
	curLength = -1;
}

//查找列表中是否有elem值的元素
bool seqLinkList::FindElem(ElemType elem) {
	for (int i = 0; i < this->Length() && data[i] == elem; ++i)
		return true;
	return false;
}

//在第nPos位置前插入值为elem的元素
void seqLinkList::Insert(int nPos, ElemType elem) {
	if (nPos > MAXSIZE|| Empty()|| nPos < 0)
	{
		if ((curLength + 1) == MAXSIZE)
		{
			cout << "List is full!";
			return;
		}
		cout << "Out of List Scale! OR List is empty!";
		return;
	}
	if (nPos<= curLength)//可以考虑从后面开始变换,这样就可以少写一个for了
	{
		ElemType* temp = new ElemType[curLength - nPos+1];//辅助数组
		for (int i = nPos; i <= curLength; i++)
			temp[i - nPos] = data[i];//偏移nPos
		data[nPos] = elem;//插入elem
		++curLength;
		for (int j = nPos+1; j <= curLength; j++)
			data[j] = temp[j - nPos - 1];//偏移nPos+1
		delete []temp;
	}
	else {
		cout << "Input index is too large!";
		return;
	}
}


//默认在列表尾部插入elem元素
void seqLinkList::Insert(ElemType elem) {
	if (curLength<MAXSIZE-1)
	{
		++curLength;
		data[curLength] = elem;
	}
	else 
	{
		cout << "Out of List Scale!";
		return;
	}
}

//默认删除尾部的元素
void seqLinkList::Delete() {
	if (!Empty())
		data[curLength--] = 0;
	else
		return;
}

//删除第nPos位置的元素,并将其值返回给elem元素
void seqLinkList::Delete(int nPos, ElemType &elem) {
	if (nPos > MAXSIZE || Empty() || nPos < 0)
	{
		cout << "Out of List Scale! OR List is empty!";
		return;
	}
	if (nPos <= curLength)
	{
		elem = data[nPos];
		for (int i = nPos; i < curLength; i++)
			data[i] = data[i + 1];
		data[curLength] = 0;
		--curLength;
	}
	else {
		cout << "Input index is too large!";
		return;
	}
}

//将所有L中不在原列表的元素插入到原列表中
void seqLinkList::merge(seqLinkList& L) {
	int La = this->Length();
	int Lb = L.Length();
	int flag = 1;
	for (int i = 0; i <= Lb; i++)
	{
		if (!this->FindElem(L.data[i]))
			this->Insert(L.data[i]);
	}
}

//打印列表
void seqLinkList::print() {
	if (Empty())
	{
		cout << "please input list";
		return;
	}
	for (int i = 0; i <= curLength; i++)
		cout << data[i] << " ";
	cout << endl;
	return;
}

main.cpp

没写几个例子,可以继续添加测试

#include"SeqLinkList.h"



int main() 
{
	seqLinkList list,list2;
	ElemType a;
	for (ElemType i = 0; i < 10; i++)
	{
		list.Insert(i);
	}
	for (ElemType i = 0; i < 4; i++)
	{
		list2.Insert(i);
	}
	list.print();
	list.Insert(9, 5);
	list.print();
	list.Insert(0, 5);
	list.print();
	list.Delete();
	list.print();
	list.Delete(9,a);
	cout << a << endl;
	list.print();
	cout << "分割线" << endl << endl;
	list.merge(list2);
	list.print();
}

 

可变长度 顺序表 C++实现  简单顺序表 C语言实现 的C++改进版 实现顺序表长度自动增加顺序表是以数组为存储结构的线性表。由于数组中各元素的地址是可计算的,所以查找定位操作 有很高的执行效率。但是这种顺序存储结构的缺点也相当明显,要获得连续的内存空间就必须一次性申请,而在程序执行之前往往无法精确得到所需空间的大小。这时通常先确定一个合适的数组长度,如果后来空间不够,再重新申请一个更大的空间并把原先空间的数据转移过来。 阅读详情

相关推荐

C++ 顺序表的类实现

1、顺序表的定义 将表中元素一个接一个的存入一组连续的存储单元中,这种存储结构是顺序结构,采用顺序存储结构的线性表简称为“ 顺序表”。 顺序表的存储特点是:只要确定了起始位置,表中任一元素的地址都通过下列公式得到: Loc(ai)=Loc(a1)+(i−1)∗L,1≤i≤n 其中,L是元素占用存储单元的长度。 2、顺序表的基本操作 (1)初始化:建立一个空的顺序表; (2)新建:新建一个顺序表; ...

qq_38236355的博客 2778

顺序表的链式存储及操作

相比于顺序存储,链式存储的优点有以下几点: 1.插入和删除操作效率高于顺序表,当数据规模越大时,效率提高越明显; 2.链式存储不需要大片连续内存空间,每个数据结点占据很少一段内存通过指针将其串起来,从而达到灵活使用的目的; 当然链式存储也有不足之处: 当遍历顺序表中的元素时需要从链表头部依次查找才能定位到要查询的数据结点; 实现代码: seq_link.h #ifndef _SEQ_LINK_H #define _SEQ_LINK_H #include <stdio.h> #include &l

m0_37546257的博客 856

C++实现顺序表的创建、初始化、查找、插入、删除

C++实现顺序表的创建、初始化、查找、插入、删除 在学习了数据结构之后,对于顺序表的相关操作有了自己的启发,因此拿来敲个代码练练手,我选用的是C++语言,因为我觉得c++可以使用引用,比较方便(纯个人看法嘻嘻),话不多说,上代码 #include<iostream> #include<algorithm> using namespace std; #define MaxSize 10 //顺序表的建立 typedef struct{ int data[MaxSize

csdn_xiaofei的博客 3万+

双向链表的实现

双向链表的实现

challenglistic的博客 469

C++实现顺序表的基本操作

C++实现顺序表的基本操作 为了对数据结构线性表中的顺序表进行练习,我写了一段可以实现顺序表创建、插入、删除、排序、打印等基本操作的代码。 #include&lt;iostream&gt; #include&lt;algorithm&gt; using namespace std; #define MAXSIZE 1000 #define OVERFLOW -2 #define ERROR 1 ...

yoko_tadzio的博客 1万+

顺序表数据结构与C++实现全面解析

线性表是最基础且广泛使用的数据结构之一,它是由零个或多个数据元素构成的有限序列。在数据结构的定义中,线性表既描述了数据元素之间的逻辑关系,也指明了其物理存储的方式。在逻辑上,线性表中每个元素都有一个确定的位置,这个位置称为元素的序号,其中第一个元素的序号为1,第二个元素的序号为2,以此类推。线性表中的元素可以是不同的数据类型,也可以是同种数据类型的集合,如整数序列、字符序列等。在物理存储上,线性表可以采取两种方式:顺序存储和链式存储。顺序存储方式下,元素的物理位置相邻,通过元素的索引可以直接访问。

weixin_42560991的博客 698

单链表的尾删、尾插、头插、头删、随机插、删的操作

seqlink.h #include&lt;stdio.h&gt; #pragma once //单向链表 //双向链表 // typedef char LinkNodeType; typedef struct LinkNode { LinkNodeType data; struct LinkNode* next; //next = NULL 结束标志 不带环 ...

DuckyLoser的博客 2103

从想法到零件:手把手拆解一个汽车功能如何从PRD写到SSTS和CTS

本文详细拆解了汽车电子需求从市场文档(MRD)到零部件技术规范(CTS)的完整流程,以雨天自动关窗功能为例,展示了PRD、SSTS和CTS的编写要点与交互设计。文章重点解析了系统分解的艺术和零部件落地的精确参数要求,为汽车电子工程师提供了从概念到实现的全流程实践指南。

weixin_30300225的博客 480

数据结构四:栈的两种形式LinkStack和SeqStack用线性表的实现方式,以及SeqQueue和LinkQueue的实现

之前写过两篇对于SeqList和LinkList的底层封装库,在阅读这篇博文前还是仔细看一下之前的底层库封装实现,因为栈的结构是一种特殊的线性表,本文探讨栈的实现由之前的线型库实现的,实践是检验真理的唯一标准,请对我的线性链表库函数有足够的信心吧!Just Like!Just Do IT !!!             SeqStack的实现方式:      #ifndef MY_SeqSt

2359Coding 3458

笔记本摄像头模拟监控推送RTSP流

FFmpeg软件:选择Windows builds by BtbN一个完整的跨平台解决方案,用于录制、转换和流式传输音频和视频。选择Windows版本EasyDarwin开源流媒体服务器 支持Windows、Linux、macOS平台;支持RTSP推流分发(推模式转发);支持RTSP拉流分发(拉模式转发);VLC Media Player软件:选择Windows64bit支持众多与及文件格式,并支持DVD影音光盘,VCD影音光盘及各类协议。

IT_LittleBaby的博客 3872

ESP32连接PDM麦克风操作指南:新手入门必看

手把手教你如何将ESP32与PDM麦克风连接,采集音频数据并用于音频分类应用。内容涵盖硬件接线、代码配置及实际调试技巧,适合初学者快速上手esp32在声音识别场景中的使用。

weixin_42590539的博客 1329

顺序表(C++类模板实现)

文章目录1. 用C++实现顺序表2. 代码 1. 用C++实现顺序表     本文用到C++中的类模板,用类模板的好处就是方便建立任何类型的顺序表。但类模板这里有个坑就是无法分离编译,具体原因可以百度搜索类模板无法分离编译。最后废话不多说,直接上代码。 2. 代码     sqlist.h文件实现顺序表的声明和定义 #ifndef SQLIST_H #define SQLIST_H #define INIT_SIZE 100 #

zws的博客 4751

BIM模型轻量化避坑指南:Revit导出GLTF常见问题及解决方案

本文深入探讨了BIM模型轻量化过程中,从Revit导出GLTF格式时遇到的常见问题与解决方案。针对文件体积膨胀、材质丢失、属性信息缺失等核心痛点,提供了从数据预处理、Draco几何压缩、纹理优化到Web端性能调优的全流程实战指南,帮助工程师高效实现BIM模型在WebGL环境中的流畅展示与交互。

wdx012345的博客 171

C++实现顺序表

c++实现顺序表中的基本操作: 1、顺序表的初始化 2、顺序表的创建 3、顺序表的插入 4、顺序表的删除 5、顺序表的查找 6、顺序表的取值 7、顺序表的清空 8、顺序表的长度 9、顺序表的判空 10、顺序表的打印 /* Project: sequence_list(数据结构-顺序表) Date: 2021/11/15 InitList(SqList &L) 参数:顺序表L 功能:初始化 时间复杂度:O(1) CreateList(SqList &L,int n) 参数:顺序表L,顺

qq_45139003的博客 1万+

J-Flash手动添加华大HC32F460型号全攻略

在嵌入式开发中,Flash编程算法是连接调试工具与微控制器的重要桥梁,它定义了芯片存储器的擦除、编程和校验等底层操作规范。其原理是通过调试接口将算法代码加载到目标芯片的RAM中执行,从而实现对Flash存储器的访问与控制。这项技术的核心价值在于打破了工具链对芯片型号的固有支持限制,使得开发者能够灵活适配各种新兴或定制化的微控制器。在工程实践中,当面对J-Link等主流调试器官方支持包更新滞后时,手动添加芯片型号成为保障开发效率的关键技能。本文以华大半导体的HC32F460系列MCU为例,详细解析了如何通过配

weixin_29192365的博客 348

135、高通 ChromaTix 调优工具入门:参数含义、调优流程与效果对比

本文介绍了高通ChromaTix色彩调优工具的核心使用要点:1. ChromaTix是位于ISP管线中的色彩处理系统,核心任务是将原始色彩映射为符合人眼感知的"舒适"效果;2. 重点解析了饱和度、色调、亮度相关饱和度等关键参数的实际含义和调试陷阱;3. 分享了四步调优流程,强调需要基于多场景数据验证;4. 通过案例展示了参数调整带来的色彩改善效果;5. 总结了实用建议,包括保持单一变量调试、量化评估色差、关注极端场景表现等。文章指出ChromaTix调优是平衡不同场景需求的"妥协艺术",需要结合客观数据和主

sundong_81的博客 106

C++顺序表的实现

// 顺序表的存储结构及基本操作实现 #include "stdlib.h" #include "iostream.h" //cin cout #define MAXSIZE 100 #define OK 0 #define OVERFLOW -2 #define ERROR -1 typedef int Status; typedef char...

H_Ystar的博客 2050

030、微透镜阵列与光场成像:从光场相机到深度感知的演进

文章摘要: 光场成像通过微透镜阵列(MLA)同时记录光线的位置与方向,实现单次曝光获取三维信息。其核心架构包括主镜头+MLA+传感器或相机阵列,各有分辨率与体积的权衡。光场支持先拍照后对焦和深度估计,但受限于微透镜基线短,精度较低。深度算法需结合多视角立体匹配与极平面图像分析,并处理噪声和温度漂移等实际问题。光场适用于短距离动态场景(如手势识别),而远距离高精度需求仍需激光雷达。建议初学者通过二手光场相机和开源工具入门,理解光场“角度域”与“空间域”的协同机制。

sundong_81的博客 50

C++语言实现顺序表

C++语言实现顺序表 顺序表的定义及其特点 顺序表的定义是:把线性表中的所有表项按照其逻辑顺序依次存储到从计算机存储中指定存储位置开始的一块连续的存储空间中。 这样,线性表中第一个表项的存储位置就是被指定的存储位置,第i个表项(2≤\leq≤ i ≤\leq≤n)的存储位置紧接在第i一1个表项的存储位置的后面。假设顺序表中每个表项的数据类型为T,则每个表项所占用存储空间的大小(即字节数)大小相同,...

BeiXi's Blog 1042

【VibeCoding系列】小白入门指南:模型选择、编辑器选择、项目预定全分析

开箱即用:下载安装就能用,不用配 API Key(也可以自己配)Cmd+K 快速修改:选中代码,按 Cmd+K,直接让 AI 修改Cmd+L 对话:侧边栏聊天,支持引用文件和代码@文件引用:输入 @ 就能引用项目中的文件,AI 自动读取上下文Agent 模式:告诉 AI 一个需求,它自动跨文件修改下载地址cursor.com(免费版有额度限制,足够入门)✅下载 Cursorcursor.com),安装打开✅选一个小项目(个人名片页 or Todo List)✅按照七步工作流开干。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 205

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【C++】数据结构 顺序表的实现(详解)

本篇博客给大家带来的是用C++语言来实现数据结构的顺序表

就业知识博客 2223

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

顺序表的C++实现

顺序表,即顺序存储结构的线性表,以结点存储位置的连续性(前后性),来表示结点的前驱后继关系。在计算机中以数组的形式保存,表中的元素依次存储在计算机内存中的一组连续的存储单元中。

赞美月亮的专栏 813

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C++ 顺序表实现

线性表就是字面上的意思, 顺序表是线性表基于数组的一种实现, “顺序”这个名字怎么来的并不清楚,可以勉强解释为“存储地址是连续、顺序的”。 另外两种线性表实现分别是“基于链表”和“散列存储”。 顺序表可以是动态的,也可以是静态的, “静态”就是一开始就知道表容量,并且这个容量在之后无法被更改; “动态”就是能够动态的改变表的容量,实现上基于动态内存分配。 基于数...

bangtuo9862的博客 268

顺序表的C++实现方法

数据结构——顺序表的C++实现 之后我会经常在这里更新我的数据结构学习成果,每天进步一点点,加油,加油,加油 如果有小伙伴一起学习就更好了hhh #include<iostream> using namespace std; template<class T> class List { }; template<class T>//线性表的元素类型为T class ArrayList :public List<T> { private: T* ar

qq_51534032的博客 1157

c++实现顺序表

#include #include using namespace std; const int maxsize=100; typedef struct SeqList { int elem[maxsize]; int length; }SeqList,*PList; SeqList sq; void CreatList(SeqList &sq,int a[],int n)//1.

~~(v_v)~~ 1545
下一篇: 单链表C++实现
-Gentle-
博客等级 码龄8年 80粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值