顺序表

数据结构之顺序表:顺序表的结构及基本操作 目录一、数据结构1.1 算法与数据结构的区别二、顺序表2.1 顺序表的基本形式【重点】2.2 顺序表的两种基本实现方式【重点】1、一体式结构:2、分离式结构:2.3 元素存储区替换与扩充1. 元素存储区的替换2. 元素存储区的扩充2.4 顺序表的操作1. 增加元素2. 删除元素2.5 Python中的顺序表 一、数据结构 数据结构指数据对象中数据元素之间的关系。 计算机只有三种数据类型:int、float、char。存储在内存中,1个int占4个字节。 1.1 算法与数据结构的区别 程序 = 数据结构 阅读详情

1、定义:

顺序表(Sequence List)是在计算机内在中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。

public interface IListDS<T>
    {
        bool Insert(T item,int pos);//插入元素
        bool IsEmpty();//是否为空
        int GetLength();//得到容量
        void Append(T item);//添加新元素
        void Clear();//清空
        T Delete(int pos);//删除元素
        T GetElem(int pos);//根据索引查找
        int Locate(T value);//根据值查找
    }

2、实现:

 public class SeqList<T>:IListDS<T>
    {
        #region 变量成员
        private int maxsize;//容量
        private T[] datas;//存放元素的数组
        private int last;//末位置
        #endregion

        #region 属性
        /// <summary>
        /// 最后一个元素位置
        /// </summary>
        public int Last
        {
            get
            {
                return last;
            }
        }

        /// <summary>
        /// 容量
        /// </summary>
        public int MaxSize
        {
            get
            {
                return maxsize;
            }
            set
            {
                maxsize = value;
            }
        }
        #endregion

        /// <summary>
        /// 索引器
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public T this[int index]
        {
            get
            {
                return datas[index];
            }
            set
            {
                datas[index] = value;
            }
        }

        /// <summary>
        /// 构造器
        /// </summary>
        /// <param name="size"></param>
        public SeqList(int size)
        {
            datas = new T[size];
            maxsize = size;
            last = -1;
        }

        #region 方法成员
        /// <summary>
        /// 得到顺序表长度
        /// </summary>
        /// <returns></returns>
        public int GetLength()
        {
            return last + 1;
        }

        /// <summary>
        /// 清空顺序表
        /// </summary>
        public void Clear()
        {
            last = -1;
        }

        /// <summary>
        /// 判断是否为空
        /// </summary>
        /// <returns></returns>
        public bool IsEmpty()
        {
            if(last==-1)
                return true;
            return false;
        }

        /// <summary>
        /// 判断顺序表是否已满
        /// </summary>
        /// <returns></returns>
        public bool IsFull()
        {
            if (last == maxsize - 1)
                return true;
            return false;
        }

        /// <summary>
        /// 添加新元素
        /// </summary>
        /// <param name="item"></param>
        public void Append(T item)
        {
            if (IsFull())
            {
                Console.WriteLine("The List's already full yet");
                return;
            }

            datas[++last] = item;
        }

        /// <summary>
        /// 插入元素
        /// </summary>
        /// <param name="item">元素</param>
        /// <param name="pos">位置</param>
        /// <returns>是否插入成功</returns>
        public bool Insert(T item, int pos)
        {
            if (IsFull())
            {
                Console.WriteLine("The List's already full yet");
                return false;
            }
            if(pos<0 || pos>last+1)
            {
                Console.WriteLine("The position is error");
                return false;
            }
            if (pos == last + 1)
                datas[pos] = item;
            else
            {
                for (int index = last; index >= pos; --index)
                {
                    datas[index + 1] = datas[index];
                }
                datas[pos] = item;
            }
            ++last;
            return true;
        }

        /// <summary>
        /// 删除元素
        /// </summary>
        /// <param name="pos"></param>
        /// <returns></returns>
        public T Delete(int pos)
        {
            T tmp = default(T);
            if(IsEmpty())
            {
                Console.WriteLine("The List is empty");
                return tmp;
            }
            if(pos<-0 || pos>last)
            {
                Console.WriteLine("The position is err");
                return tmp;
            }
            if (pos == last)
                tmp = datas[last];
            else
            {
                tmp = datas[pos];
                for (int index = pos; index < last; ++index)
                {
                    datas[index] = datas[index + 1];
                }
            }
            --last;
            return tmp;
        }

        /// <summary>
        /// 根据索引查找某一元素
        /// </summary>
        /// <param name="pos">索引</param>
        /// <returns></returns>
        public T GetElem(int pos)
        {
            if (IsEmpty() || (pos < 0) || pos > last)
            {
                Console.WriteLine("List is empty or the position is error");
                return default(T);
            }
            return datas[pos];
        }

        /// <summary>
        /// 根据值查找某一元素
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public int Locate(T value)
        {
            if (IsEmpty())
            {
                Console.WriteLine("List is empty");
                return -1;
            }
            int index = 0;
            for (index = 0; index <= last; ++index)
            {
                if (value.Equals(datas[index]))
                    break;
            }
            if (index > last)
                return -1;

            return index;
        }
        #endregion
    }

 

3、演示:

class Program
    {
        static void Main(string[] args)
        {
            SeqList<int> seqList = new SeqList<int>(8);
            seqList.Append(21);
            seqList.Append(22);
            seqList.Append(23);

            Console.WriteLine("Inital the sequence list");
            for(int i=0;i<seqList.GetLength();i++)
            {
                Console.WriteLine(seqList[i]);
            }
            Console.WriteLine("Insert method sample:");
            seqList.Insert(20, 0);
            seqList.Insert(24, 4);
            for(int i=0;i<seqList.GetLength();i++)
            {
                Console.WriteLine(seqList[i]);
            }
            Console.WriteLine("Delete method sample:");
            seqList.Delete(0);
            for(int i=0;i<seqList.GetLength();i++)
            {
                Console.WriteLine(seqList[i]);
            }
            Console.WriteLine("The 2st item is:{0}", seqList.GetElem(1));
            Console.WriteLine("The position of value 23 is:{0}", seqList.Locate(23));
            Console.WriteLine("Empty the sequence list");
            seqList.Clear();
            Console.WriteLine("The length of the sequence list is {0}",seqList.GetLength());
            Console.ReadKey();
        }
    }

Windows下用Docker部署RagFlow的5个常见错误及解决方法(附详细日志分析) 本文针对Windows系统下使用Docker部署RagFlow的常见难题,提供了详细的避坑指南。文章深度剖析了WSL2配置、端口冲突、文件权限、资源限制及网络通信这五个典型错误场景,并结合具体日志分析,给出了经过验证的解决方案,帮助开发者高效完成部署。 阅读详情

相关推荐

Unity UI Toolkit避坑指南:从官方Samples到实际项目,这些‘坑’我帮你踩过了

本文分享了Unity UI Toolkit在实际项目中的避坑经验和优化技巧,包括动画系统的高效替代方案、3D世界UI的创新实现方式、USS样式继承的反直觉规则等。通过详细的代码示例和性能优化策略,帮助开发者避免常见陷阱,提升开发效率。

weixin_29535577的博客 343

顺序表详解

目录 一、线性表的概念 二、顺序表 1、顺序表的概念 1). 静态顺序表:使用定长数组存储元素。 2). 动态顺序表:使用动态开辟的数组存储。 三、接口实现 1、创建 2、初始化 3、扩容 4、尾插 5、打印 6、销毁 7、尾删 越界: 8、头插 9、头删 10、任意位置插入 11、删除任意位置 12、查找 13、修改 一、线性表的概念 【百度百科】 线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是...

weixin_65132948的博客 2万+

cmu15445 2023fall project4 详细过程(包括Bonus Tasks) Concurrency Control

CMU15-445 23fall project 4详解

LA的博客 1606

【数据结构】顺序表

顺序表示一种最为简单的线性结构,可以分为两种,一种是静态顺序表,一种是动态顺序表 1)静态顺序表 所谓静态顺序表是指一旦定义了该表,其大小始终固定不变,函数调用时,静态顺序表在函数栈上开辟空间,我们熟悉的数组就是一种静态顺序表 e.g #definde MAXSIZE 100 ElemType Sqlist[MAXSIZE]; int len; 2)动态顺序表 所谓动态顺序表...

无意呢的博客 5877

Creo报许可证错误License request failed for feature的解决方案

有些朋友用了一段时间打开creo软件,出现icense request failed for feature”错误,这个是Creo许可证出现了问题,一般是许可证文件无效或是已过期,导致Creo软件通信出现故障,就会出现Creo License request failed for feature, Requsesting CreoPMA_SSQ ,Run ptcstatus.bat server status。第三步:键盘按win+R,在运行窗口里输入:cmd,然后点确定。第八步:点击系统,找到系统信息。

Q82556499的博客 3万+

GoPro官方API实战:从蓝牙配对到Wi-Fi流媒体,构建跨平台控制应用

本文详细解析了GoPro官方API的开发实践,涵盖蓝牙配对、Wi-Fi流媒体控制等关键技术。通过实战案例,指导开发者如何构建跨平台控制应用,解决设备发现、指令解析、视频流传输等核心问题,并分享Android平台迁移经验与常见问题排查方法。

weixin_30727835的博客 397

顺序表初始化

1. 顺序表 顺序表(顺序存储结构) 存储数据时,会提前申请一整块足够大小的物理空间,然后将数据按照次序依次存储到一整块连续的存储空间,存储时做到数据元素之间不留一丝缝隙 使用顺序表存储集合 {1,2,3,4,5},数据最终的存储状态如图所示: 1.1. 顺序表的初始化 顺序存储结构需要如下三个属性: 存储空间的起始地址:数组的起始地址 顺序表的最大存储容量:数组长度size 顺序表的当前长度,也就是表中存储数据元素的个数:length 自定义顺序表结构的C代码: typedef struct Tab

Lianuuu的博客 1万+

下拉式菜单设计——Power BI

Power BI导航设计:多级下拉菜单

weixin_41542593的博客 5435

顺序表的基本操作

顺序表是用一段的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般分为静态顺序表和动态顺序表,静态顺序表一般是用定长数组存储,而动态顺序表则是用动态内存管理函数进行动态分配空间,当空间不够时可以进行增容一般我们不太经常使用静态顺序表,因为实际需求往往空间都是不定的,因此我们只讨论动态顺序表顺序表的本质还是对数组进行操作,只是和数组有所不同的是,顺序表的数据是连续存放的二.顺序表的基本操作。

黄超的博客 2035

C#上位机开发实战全流程:从需求到落地,避坑指南+完整代码

作为一名做了5年工业自动化上位机开发的程序员,我踩过的坑比写过的代码还多——从最初串口通信粘包导致数据错乱,到可视化图表卡顿卡死,再到现场异常崩溃无日志可查,每一次踩坑都是一次血泪教训。今天这篇文章,我会把C#上位机开发的全流程拆解开,从需求分析到通信模块、数据可视化,再到异常处理,每个环节都结合工业实际场景,分享真实项目中能用的方案、完整代码和避坑技巧。不管你是刚入门的新手,还是想优化现有项目的老司机,相信都能有所收获。很多新手做上位机开发,一上来就闷头写代码,最后发现做出来的东西不符合现场需求——比如客

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 996

52、Power BI Desktop 数据筛选全攻略

本文全面介绍了Power BI Desktop中各类数据筛选功能的使用方法,涵盖布尔型数据筛选、高级文本筛选、Top N筛选、可视化级别、页面级别和报告级别筛选等核心操作。通过详细步骤、流程图和实际案例,帮助用户深入理解筛选器的层级关系与综合应用技巧,并提供常见问题解决方案,助力高效精准的数据分析与可视化展示。

linux6sysadmin的博客 110

顺序表知识点

的值也赋值给dst。

m0_57388581的博客 1117

【GameFramework框架内置模块】10、本地化(Localization)

本地化(Localization),也就是我们所说的不同地区的语言适配,比如说中文版“你好”,英文版是“Hello”。GameFramework在本地化方面,不仅支持文本的本地化,还支持任意资源的本地化,比如说游戏中释放烟花的特效也可以做出不同地区的版本,使得中文版烟花里面的“新年好”字样的特效,在英文版里面是“Happy New Year”字样的特效。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2305

数据结构之顺序表

数据结构是计算机存储、组织数据的⽅式。数据结构是指相互之间存在⼀种或多种特定关系的数据元素的集合。数据结构反映数据的内部构成,即数据由那部分构成,以什么⽅式构成,以及数 据元素之间呈现的结构。一个简单的例子:我们的牧民养了很多羊,然后我们的羊是放养在牧场,假如你突然要找一个羊假如他叫小咩;在这个随便放养的情况下,我们并不知道这只羊在哪,很难找到,但是假如你建了个养殖场,里面的每个羊都被有序的管理着这样你想找某个羊就很容易了,就可以可以通过一些编号,和你管理时所用的方法去寻找,

2301_80028974的博客 2617

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

顺序表的实现

目录 1.顺序表的概念 2.静态顺序表 分析: 3.动态顺序表 分析: 4.顺序表初始化 5.顺序表尾部操作 5.1尾插 空间检查函数实现 分析: 5.2尾删 分析: 6.顺序表的头部操作 6.1头插 分析: 6.2头删 分析: 7.固定位置操作 7.1固定位置插入 分析: 7.2固定位置删除 分析: 8.查找及打印 9.销毁顺序表 10.我的菜单及主函数 直接上代码: 1.顺序表的概念 顺序表是用一段物理地址连续的存储单元依次存储数据元素...

weixin_53316121的博客 3180

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【数据结构】顺序表的实现

【数据结构】顺序表的实现

m0_59292239的博客 3220

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

深入解析顺序表以及顺序表的功能实现

顺序表是一种线性表的存储结构,用一组物理地址连续的存储单元依次存储数据元素。其逻辑上相邻的元素在物理位置上也相邻,通常采用数组实现。顺序表的底层是数组,也就是说顺序表存储数据时用的是数组,对顺序表的增添删改,修改的是数组。123456顺序表那么顺序表和数组是什么关系呢?顺序表是数组在逻辑层面的抽象和扩展。数组提供存储基础,顺序表在此基础上增加了操作和管理的逻辑,更适合实际应用需求。//存储数据//有效数据个数//空间大小//};

2503_91432867的博客 814

【顺序表】顺序表定位

顺序表定位操作listFind(SeqList *head,dataType x)的功能是:在线性表中查找是否存在数据元素x,如果存在,则返回线性表中和x值相等的第一个数据元素的符号(序号从0开始);如果不存在,则返回-1 题目分析:   在学习C语言的时候,相信大家应该都做过这样一个题:判断数组a[]中是否存在元素x,若存在,则返回下标,否则返回-1。是否有印象呢??? 这两个题本质一模一样,唯一不同的是本题利用“顺序表”将数组a[]包装了起来。在遍历的过程中,拿顺序表的数据去和x比对,若相同

chaim16的博客 3519

详解动态顺序表

路虽远,行则至。速度虽慢,坚持则是答案

X_do_myself的博客 1102

【数据结构】—— 顺序表

顺序表(Sequential List)是一种基本的数据结构,它通过一组连续的存储单元来存储具有相同类型的数据元素。

ElvInR的博客 1765

【数据结构与算法】线性表、顺序表、静态顺序表、动态顺序表

本篇文章大部分内容摘自严蔚敏、李冬梅、吴伟民编著的由人民邮电出版社出版发行的《数据结构:C语言版》。本文中的所有代码使用C23标准的C语言实现,因此在编译时请加上-std=c2x,代码中若存在错误,欢迎大家在评论区指出。😘❤️❤️❤️线性表是最基本且最常用的一种线性结构,同时也是其他数据结构的基础,尤其是单链表,是贯穿整个数据结构课程的基本技术。在日常生活中,线性表的例子比比皆是。例如,26个英文字母(A,B,C, …, Z)、学生成绩表等。

DreamSuif的博客 1156

顺序表的那些事儿

数组是由数据类型相同的的一系列元素组成,并且存储在一个连续的内存块中,并且通过索引来访问。数组是。

weixin_73086307的博客 851

顺序表的总结

顺序表

m0_73268549的博客 725
上一篇: 单向链表
下一篇: 双向链表
fisea
博客等级 码龄19年 40粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值