2.2.顺序表的定义

王道数据结构2.2.1-顺序表的定义 1、顺序表的实现——静态分配 #include<iostream> using namespace std; #define MaxSize 10 //定义最大长度 typedef struct{ int data[MaxSize]; //用静态数组存放数据元素 int length;//顺序表的当前长度 }SqList; //顺序表的类型定义 //初始化一个顺序表 void InitList(SqList &L){ for(int i=0;i<MaxSiz 阅读详情

一.概述:


二.顺序表:

1.概念:

2.顺序表的实现:

1)静态分配:

比如数组,数组大小一旦确定,就不可以再被改变。

ElemType代表数据类型,比如整型,浮点型等。

例如:
#include<stdio.h>
#define MaxSize 10 //定义最大长度 
​
typedef struct
{
    int data[MaxSize]; //用静态的“数组”存放数据元素,最多存MaxSize个,且为int型,共4*10个字节 
    int length; //顺序表的当前长度 ,共4个字节 
}SqList; //顺序表的类型定义 
​
​
//基本操作 - 初始化一个顺序表
void InitList(SqList &L)
{
    for(int i=0;i<MaxSize;i++)
    {
        L.data[i]=0; //将所有数据元素设置为默认初始值 ,可省 
    }
    L.length=0; //顺序表初始长度为0 ,因为一开始没存元素 
} 
​
​
int main()
{
    SqList L; //声明一个顺序表 
    InitList(L); //初始化顺序表
    //...未完待续,后续操作 
    return 0;
}

上述代码将所有数据元素设置为默认初始值(InitList函数里)虽然可以省略,但还是会出问题,即如下代码:

如果没有初始化,访问数据到MaxSize,运行结果会有“脏数据”;

如果没有初始化,访问数据到length(顺序表的当前长度),运行结果不会走for循环,因为不初始化,意味着数组长度为0,就无法循环打印数组内容;

InitList函数里给顺序表长度length初始化为0不可省,因为无法预知在这小片的内存区域内之前存放的是什么数据,而且有的编译器默认给初始值,有的默认不给,为了保险,不可省初始化顺序表长度

注意:

静态分配局限性:“数组”长度不可调。

2)动态分配:

动态分配:“数组”长度可变。

指针data指向顺序表中的第一个数据元素。

malloc返回一个指向某个存储空间开始地址的指针。

ElemType指代数据类型,如整型,浮点型。

malloc函数和free函数都需要头文件#include<stdlib.h>。

3)实例:

#include<stdio.h>
#include<stdlib.h>
#define InitSize 10 //默认的最大长度 
​
typedef struct
{
    int *data; //指示动态分配数组的指针
    int MaxSize; //顺序表的最大容量
    int length; //顺序表的当前长度 
}SeqList;
​
​
void InitList(SeqList &L)
{
    //用malloc函数申请一片连续的存储空间
    L.data = (int *)malloc( InitSize*sizeof(int) ); //用最大长度乘,因为开辟的是整个空间
    L.length = 10; //一开始长度赋值为10,与InitSize(默认的最大长度 )一样 
    L.MaxSize = InitSize; 
}
​
​
//增加动态数组的长度
void IncreaseSize(SeqList &L,int len) //len是拓展的长度 
{
    int *p=L.data; //把L.data给指针p 
    L.data = (int *)malloc( (L.MaxSize+len)*sizeof(int) ); //此时申请的就是另一片新内存空间 
    for(int i=0 ; i<L.length ; i++)
    {
        L.data[i]=p[i]; //将数据复制到新区域 
    }
    L.MaxSize=L.MaxSize+len; //顺序表最大长度增加len
    free(p); //释放原来的内存空间(长度小的) 
} 
​
​
int main()
{
    SeqList L; //声明一个顺序表-->开辟连续的内存空间 
    InitList(L); //初始化顺序表
    //...往顺序表中随便插入几个元素...
    IncreaseSize(L,5); 
    return 0;
}


三.顺序表的实现:

1.顺序表的特点:

  • 随机访问,即可以在O(1)时间内找到第i个元素,因为顺序表是连续的,找到一个元素,剩下的元素加/减n(n为自然数)个字节就可以找到指定元素

  • 存储密度高,每个节点只存储数据元素(链式存储还存地址)

  • 拓展容量不方便(即便采用动态分配的方式实现,拓展长度的时间复杂度也比较高)

  • 插入和删除操作不方便,需要移动大量元素

2.图解:

3.总结:


深入解析SerDes系统中的时钟数据恢复电路(CDR)——基于Cadence的PLL/Bang-Bang/PS-PI架构实现与仿真 本文深入解析SerDes系统中的时钟数据恢复电路(CDR),重点探讨基于Cadence平台的PLL、Bang-Bang和PS-PI三种架构的实现与仿真。通过详细的技术对比和工程实践案例,揭示CDR在高速串行通信中的关键作用,并提供TSMC 28nm工艺下的优化策略与故障排查经验,助力工程师应对10Gbps以上SerDes设计挑战。 阅读详情

相关推荐

SAP FICO CK40N批量发布标准价:常见报错排查与实战解决指南

本文详细解析了SAP FICO模块中CK40N批量发布标准价的常见报错及解决方案。从物料选择、成本核算到最终发布的全流程,提供了针对'已有标准成本估算记号'等典型报错的实战处理技巧,并分享了预防性维护与批量处理的高效方法,帮助财务人员提升工作效率。

weixin_29234509的博客 304

2.2.1、顺序表的定义

顺序表是线性表的顺序存储结构,其核心特征是采用连续内存空间存储数据元素,保证逻辑相邻的元素在物理存储上也相邻。关键点包括:1)物理存储连续,类似数组结构;2)逻辑与物理顺序完全一致;3)包含数据区和长度信息。顺序表分为静态(固定容量)和动态(可扩展容量)两种实现形式,其中动态顺序表更常用。其优势在于O(1)时间复杂度的随机访问,但插入/删除操作需要移动元素,时间复杂度为O(n)。结构上通常由数据数组、当前长度和最大容量三部分组成。

阿泉的博客 871

BDD测试之Behave使用入门

BDD测试(Behavior-Driven Development Testing)是一种基于“行为驱动开发”(BDD)理念。

想要成为酷盖但是失败的小明 580

02-2.2.1 顺序表的定义

—用的方式实现线性表顺序存储。把的元素存储在的存储单元中,元素之间的关系由存储单元的邻接关系来体现。但是在线性表中,元素的存放位置不是元素的序号,而是要加上数据元素的大小,原因是数据元素在线性表中存储要占用空间,所以每一个数据元素之间的间隔就是前一个数据元素的大小,如下图所示:那么如何知道一个数据元素的大小呢?Ans:在C语言中,使用函数。

G2Esports_NiKo的博客 668

【项目实战】小智AI MCP协议在IoT设备控制中的深度应用解析

本文深度解析小智AI MCP协议在IoT设备控制中的应用实践。通过MCP协议作为AI与物联网设备的翻译桥梁,实现大语言模型与ESP32等硬件的无缝通信。文章详细介绍了环境搭建、工具注册、消息路由机制,并以语音控制RGB灯光系统为例展示完整开发流程,为AIoT开发者提供实用指南。

oauth7security的博客 824

初级文章【西门子】字符拼接成字符串

针对S7-400极其以下PLC,1200往上据说有专门的块了呢,首先,我是不用库的,需要什么函数会自己写,OK进入正题。 首先,我们有一个DB块,里面有14个char,一个14位的char数组和一个14位的string。如下图。 我们的目的是将char1-char10拼接成一个string。 第一种方式:第一步,将char放进数组。 ​​​​​​​ 相信大家都能看明白,但是我还是要解释解释 L取值2 T赋值到临时变量DBNO(INT) OPN DB [#DBNO]获取DB块,这一句.

NS_Speak(IVAV) 1万+

2.2 顺序表的定义及操作

文章目录静态分配顺序表的实现--初始化顺序表的插入、删除顺序表的查找 静态分配 // A code block var foo = 'bar'; // An highlighted block #include <iostream> #define Maxsize 10 typedef struct{ int data[Maxsize];//用静态的“数组”存放数据元素 int length;//顺序表的当前长度 } SqList; int main(){ SqList L;//声明一个

m0_46640227的博客 282

mac(apple silicon)arm64安装spm12详细教程

3.下载matlab runtime R2023b for macOS (macA64),注意必须下载这个,只下载matlab是不可以的。默认安装目录是/Applications/MATLAB/MATLAB_Runtime/R2023b。注意最后的命令,路径根据自己的matlab_runtime安装位置进行调整,然后就可以安装成功了。5. 解压spm12.zip,解压后将文件夹拖到应用程序下(Applications)2.下载spm12,这个版本可兼容mac芯片!6.打开mac终端,输入。

weixin_62332001的博客 2024

2.2.1 顺序表的定义

线性表的顺序存储又被称为顺序表。它是用一组地址连续的存储单元,依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。第1个元素存储在线性表的起始位置,第i个元素的存储位置后面紧接着存储的是第i+1个元素。因此,顺序表的特点是表中元素的逻辑顺序与其物理顺序相同。 假设线性表L存储的起始位置为LOC(A),sizeof(ElemType)是每个数据元素所占用存储空间的大小。 注意...

qq_41597896的博客 439

内存学习(3):DRAM的基础存储结构(存储层级、读写过程,刷新与暂存)

DRAM,全称为 Dynamic Random Access Memory ,中文名是“动态随机存取存储器”。所谓“动态”是和“静态”相对应的,芯片世界里还有一种 SRAM 静态随机存取存储器的存在。笼统地说,DRAM 的结构比 SRAM 更简单,面积占用更小,适合制作大容量的存储芯片;而 SRAM 结构复杂一些,一般使用六个晶体管,面积消耗大,但是读写速度快,而且因为 SRAM 只用到晶体管,所以在工艺上和逻辑芯片相兼容,我们可以在逻辑芯片上直接集成 SRAM。

呆呆象呆呆的博客 2万+

MFC 中实现 WebSocket 客户端以支持实时双向通信

3. **协议兼容**:若服务器使用 `wss://`(加密),需在 `lws_client_connect_info` 中配置 SSL 相关参数(`ssl_connection = LCCSCF_USE_SSL`)。- 编辑框(`m_editUrl`):输入 WebSocket 服务器地址(如 `ws://echo.websocket.events`)。2. 将编译后的库文件(`.lib`、`.dll`)和头文件路径添加到 MFC 项目中(项目属性 -> VC++ 目录)。// UI:服务器地址。

寒寒豆豆软件公司的博客 202

2.2-1顺序表的定义

2.2-1顺序表的定义

weixin_57848728的博客 189

【libnice】meson + vs2022,生成win32工程

libnice

突围 947

2.2 顺序表的定义、插入、删除、查找

1. 顺序表的定义 1.1 知识总览 1.2 顺序表的定义 1.3 顺序表的实现–静态分配 1.4 顺序表的实现–动态分配 1.5 顺序表的实现 1.6 知识回顾 2. 顺序表的插入删除 2.1 知识总览 2.2 顺序表的基本操作–插入 2.3 插入操作的时间复杂度 2.4 顺序表的基本操作–删除 2.5 删除操作的时间复杂度 2.6 知识回顾 3. 顺序表查找 3.1 知识总览 3.2 顺序表的按位查找 3.3 按位查找的时间复杂度 3.4 顺序表的按值查找 3.5 结构类型的比较 3.6 按值查找的时间

qq_26553393的博客 309

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

《2.2.1顺序表的定义|精讲篇》

上一节学习了线性表的逻辑结构,线性表需要实现哪些基本运算/操作?在本节中,我们将学习顺序表的定义、顺序表的特性,以及如何用代码来实现顺序表。下个小节我们会介绍基于顺序存储(这种存储结构)如何用代码具体的实现之前定义的一系列基本操作。

2201_75865219的博客 724

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

数据结构学习笔记2——顺序表的类定义与实现

数据结构学习笔记1.1——顺序表的类定义与实现顺序表的定义和特点类定义与实现 顺序表的定义和特点 顺序表的定义是:把线性表中的所有表项按照其逻辑顺序依次存储到从计算机存储中指定存储位置开始的一块的连续空间中。第一个表项的假设顺序表中每个表项的数据类型使T,则每个表项所战勇的存储空间的大小相同,均为sizeof(T),整个顺序表占用的存储空间的大小为n*sizeof(T),其中n为线性表的长度。 事实上,以上描述和C/C++中的一维数组十分相似。在C++中,只要定义了一个数组,就定义了一块可供用户使用的连续的

qq_45830912的博客 1417

2.2.1_顺序表的定义

定义 :顺序表,即用顺序存储的方式实现的线性表。 注:什么是顺序存储? 答:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。 如何求数据元素的大小? 答:C语言中的 sizeof (使用时不需要添加头文件) 用法:sizeof(ElemType) 例如:sizeof(int) = 4 顺序表的特点 随机访问:即可以在O(1)的时间复杂度内找到第 i 个元素。 存储密度高:每个结点只存储数据元素,而不用去存放指针。 拓展容量不方便: 1)静态分配方式:不

weixin_45693042的博客 424

2.2.1 顺序表的定义-动态分配

-执行代码后,内存就生成一片存储空间,共三个变量。

qq_62642833的博客 834

2-顺序表(定义+结构和实现+操作+python中的顺序表)

一、顺序表的定义 在程序中,经常需要将一组(通常是同为某个数据类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等。一组数据中包含的元素个数可能发生变化(可以增加或删除元素)。 对于这种需求,最简单的解决方案便是将这样一组元素看成一个序列...

chuiai8582的博客 740

【数据结构】2-2-1顺序表的定义以及实现

顺序表是一种线性表的顺序存储结构,通过将逻辑上相邻的元素存储在物理位置上也相邻的存储单元中来实现。顺序表可以通过静态分配或动态分配方式实现。静态分配法一次性分配固定大小的连续存储空间,表长确定后无法更改,可能导致内存浪费。动态分配法则通过malloc和free函数动态申请和释放空间,支持扩展容量,但复制元素时时间开销较大。顺序表的特点包括:支持随机访问(O(1)时间复杂度)、存储密度高、扩展容量不便、插入和删除操作需要移动大量元素。

weixin_43192805的博客 514

2.2.1顺序表的定义-静态分配

①声明一个顺序表L后,计算机就会给该顺序表分配一个空间(10个)

qq_62642833的博客 199

《数据结构》--2.2-1顺序表的定义

《数据结构》--2.2-1顺序表的定义

Mr.Liu 的数据结构之路 400

数据结构实验2:顺序表的定义及检索、插入、删除等算法的实现

数据结构 实验2 顺序表的定义及检索、插入、删除等算法的实现。

m0_68157027的博客 1417

2022 C语言数据结构总结浅浅入门(2)重定义与顺序表

萌新新笔记非日更总结

weixin_56863076的博客 377

【数据结构-线性表】2.1线性表定义-顺序表

数据结构三要素一一逻辑结构、数据的运算、存储结构(物理结构)线性表属于逻辑结构线性表总览。

weixin_46200189的博客 248

【数据结构与算法】(2):线性表的定义和分类(顺序表和链表)

线性表的定义特点和存储结构,顺序表和链表

更新C/C++,数据结构与算法,计算机视觉,深度学习,目标检测 345

2.1C++中线性表、顺序表、链表的定义和特点及插入、删除等算法(附代码)

特性顺序表链表存储方式连续内存分散内存扩容成本高(需要拷贝)低(动态申请)随机访问O(1)O(n)头部插入O(n)O(1)内存利用率高(无指针开销)低(有指针开销)

2401_87355142的博客 385
上一篇: 2.4.顺序表的查找
下一篇: 2.1.线性表的定义和基本操作
巧克力拌面
博客等级 码龄3年 1153粉丝 282原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值