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

数据结构(Chapter Two -01)—线性表及顺序表

2.1 线性表

 线性表是具有相同数据类型的n个数据元素的有限序列。第一个元素为表头元素,最后一个元素为表尾元素。除第一个元素,每个元素有且仅有一个直接前驱。除最后一个元素,每个元素都仅有一个直接后继

其中线性表包括以下(字有点丑,不要介意):

接下来展开讲述顺序表

2.2顺序表

线性表的顺序存储叫做顺序表。它是由一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻,举个例子其实数组就是典型的顺序存储结构。

通过数组,我们可以分析一波顺序表。

优点:随机访问,访问时间O(1);存储密度高;

缺点:插入和删除操作需要移动大量元素(在数组插入或者删除某元素,因为要保证元素与元素的顺序结构,必然会需要移动大量元素。)

接下来就是顺序存储结构的大小分配,也可认为是数组的静态分配和动态分配,搞过程序设计的友友通常会理解。有明确的数据个数时,可以采用静态数组。有个时候不知道数据有多少个,不知道要分配多大的数组的时候,就采用动态数组。以下的ElemType为数据类型,可以是int,string,等;

静态顺序表:

#define MaxSize 50       //定义顺序表最大长度
typedef struct{ElemType data[MaxSize];//顺序表的元素int length;            //顺序表的当前长度
}SeqList;                    //顺序表的类型定义

动态顺序表:

#define InitSize 100     //表长度的初始定义
typedef struct{        ElemType* data;        //指示动态分配的数组的指针int MaxSize ,length;   //数组的最大容量和当前个数 
}SeqList;                //动态分配数组顺序表的类型定义

C语言初始化动态分配语句:

SeqList L;//L为顺序表
L.data = (int*) malloc (sizeof(int) * InitSize);//sizeof(数组名),这里的数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小

C++的初始动态分配语句为:

SeqList L;
L.data = new ElemType(InitSize);

写到这里我还是想简单说一下我对于&和*的理解。

首先先说一下地址吧,我们存储的每一个数据都是有相应的地址的,就像我们寄东西给别人,我们需要给出对方的所在地址,我们才可以寄给对方,计算机中数据也不例外。指针是什么呢,我通常认为是指向一个某一数据类型变量地址的读取工具,例如我知道了对方的地址,我需要去访问我就需要用到指针,需要看后面的代码理解。”&“是取地址符号,取地址应该非常好理解吧,就是获得相应变量的地址。为了方便理解,直接上代码:

#include<stdio.h>
int main()
{int a=10;printf("%lld",&a);
}

运行结果大家都不一样的,我的是这个:

这个返回的就是a的地址。

对于“*"的理解,我先展示一段代码和结果:

#include<stdio.h>
int main()
{int a = 10;int* b = &a;//(int*)是一个int指针类型printf("%d\n",*b);printf("%d",b);
}

结果是这样的:

注意了喔,int* b = &a;里面的" int* "的是固定的搭配,不要混了,以为是b上面的。b作为int指针类型,存的是a的地址,给它一个"*",“*b"转到获取该地址的数据值,所以”*“是间接访问操作符。当然,这个只是指针的冰山一角,如果有兴趣,最好还是去看看专业书籍。

最后拿着C语言初始化动态分配结合数据结构来实现一波:

#include<stdio.h>
#include <stdlib.h>
#define InitSize 100     //表长度的初始定义
typedef struct
{        int *data;        //指示动态分配的数组的指针int MaxSize ,length;   //数组的最大容量和当前个数 
}SeqList;                //动态分配数组顺序表的类型定义int main()
{SeqList L;L.data = (int*) malloc (sizeof(int) * InitSize);L.length = 50;L.MaxSize = 100;//给数组的前50个分别赋值0,1....49for(int i= 0;i<50;i++){*(L.data+i) = i;//L.data+i类似于数组的序号依次递增,如a[0],a[1]...a[49]}//打印输出for(int i = 0;i<50;i++){printf("%d ",*(L.data+i));}free(L.data);//记得malloc动态分配的存储空间需要释放
}

结果如下:

最好的理解当然是自己去敲一遍代码,实现一次。最后的最后,上文如果有什么描述不准确的或错误,欢迎各位佬指出!

趁年轻,勇敢闯!

相关文章:

数据结构(Chapter Two -01)—线性表及顺序表

2.1 线性表 线性表是具有相同数据类型的n个数据元素的有限序列。第一个元素为表头元素&#xff0c;最后一个元素为表尾元素。除第一个元素&#xff0c;每个元素有且仅有一个直接前驱。除最后一个元素&#xff0c;每个元素都仅有一个直接后继。 其中线性表包括以下&#xff08;…...

【刷题笔记1】

笔记1 string s;while(cin>>s);cout<<s.length()<<endl;输入为hello nowcoder时&#xff0c;输出为8 &#xff08;nowcoder的长度&#xff09; 2.字符串的输入(有空格) string a;getline(cin, a);cout<<a<<endl;输入为ABCabc a 输出为ABCabc a …...

视频数据卡设计方案:120-基于PCIe的视频数据卡

一、产品概述 基于PCIe的一款视频数据收发卡&#xff0c;并通过PCIe传输到存储计算服务器&#xff0c;实现信号的采集、分析、模拟输出&#xff0c;存储。 产品固化FPGA逻辑&#xff0c;实现PCIe的连续采集&#xff0c;单次采集容量2GB&#xff0c;开源的PCIe QT客…...

Windows使用VNC Viewer远程桌面Ubuntu【内网穿透】

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…...

javascript 数组处理的两个利器: `forEach` 和 `map`(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

【C语言】SCU安全项目1-FindKeys

目录 前言 命令行参数 16进制转字符串 extract_message1 process_keys12 extract_message2 main process_keys34 前言 因为这个学期基本都在搞CTF的web方向&#xff0c;C语言不免荒废。所幸还会一点指针相关的知识&#xff0c;故第一个安全项目做的挺顺利的&#xff0c…...

IDA pro软件 如何修改.exe小程序打开对话框显示的文字?

环境: Win10 专业版 IDA pro Version 7.5.201028 .exe小程序 问题描述: IDA pro软件 如何修改.exe小程序打开对话框显示的文字? 解决方案: 一、在IDA Python脚本中编写代码来修改.rdata段中的静态字符串可以使用以下示例代码作为起点(未成功) import idc# 定义要修…...

Ubuntu22.04切换用户

一、只有一个用户时没有切换用户菜单项 1、用户信息 cat /etc/passwd 2、系统菜单 二、添加用户 添加新用户ym&#xff0c;全名yang mi 三、有两个及以上的用户时出现切换用户菜单项 1、用户信息 cat /etc/passwd 2、系统菜单 四、切换用户 1、点击上图中Switch User …...

torch.gather(...)

1. Abstract 对于 pytorch 中的函数 torch.gather(input, # (Tensor) the source tensordim, # (int) the axis along which to indexindex, # (LongTensor) the indices of elements to gather*,sparse_gradFalse,outNone ) → Tensor有点绕&#xff0c;很多博客画各…...

vscode如何开发微信小程序?JS与TS的主要区别?

要在 VS Code 中编写微信小程序代码并同步到 Git&#xff0c;需要安装以下插件&#xff1a; 1. 微信小程序插件&#xff08;WeChat Mini Program&#xff09;&#xff1a;此插件提供了微信小程序的语法高亮、代码提示、调试、上传等功能。 2. Git 插件&#xff08;GitLens、…...

产品入门第五讲:Axure交互和情境

目录 一.Axure交互和情境的介绍 1.交互介绍 概念 常见的Axure交互设计技巧 2.情境介绍 概念 常见的Axure情境设计技巧&#xff1a; 二.实例展示 1.ERP登录页到主页的跳转 2.ERP的菜单跳转到各个页面 &#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个…...

Python 自动化之收发邮件(一)

imapclient / smtplib 收发邮件 文章目录 imapclient / smtplib 收发邮件前言一、基本内容二、发送邮件1.整体代码 三、获取邮件1.整体代码 总结 前言 简单给大家写个如何用Python进行发邮件和查看邮件教程&#xff0c;希望对各位有所帮助。 一、基本内容 本文主要分为两部分…...

Flutter开发笔记 —— sqflite插件数据库应用

前言 今天在观阅掘金大佬文章的时候&#xff0c;了解到了该 sqflite 插件&#xff0c;结合官网教程和自己实践&#xff0c;由此总结出该文&#xff0c;希望对大家的学习有帮助&#xff01; 插件详情 Flutter的 SQLite 插件。支持 iOS、Android 和 MacOS。 支持事务和batch模式…...

OxLint 发布了,Eslint 何去何从?

由于最近的rust在前端领域的崛起&#xff0c;基于rust的前端生态链遭到rust底层重构&#xff0c;最近又爆出OxLint&#xff0c;是一款基于Rust的linter工具Oxlint在国外前端圈引起热烈讨论&#xff0c;很多大佬给出了高度评价&#xff1b;你或许不知道OxLint&#xff0c;相比ES…...

第一次使用ThreadPoolExecutor处理业务

通过对业务逻辑的分析&#xff0c;进行编码&#xff0c;先把第一条sql查出来的数据进行分组&#xff0c;然后分别使用不同的线程去查询数据返回&#xff0c;并添加到原来的数据中。 总感觉哪里写的不对&#xff0c;但是同事们都没用过这个&#xff0c;请大家指教一下&#xff…...

Sharding-Jdbc(6):Sharding-Jdbc日志分析

1 修改配置 将配置文件中的开启分片日志从false改为true Sharding-JDBC中的路由结果是通过分片字段和分片方法来确定的,如果查询条件中有 id 字段的情况还好&#xff0c;查询将会落到某个具体的分片&#xff1b;如果查询没有分片的字段&#xff0c;会向所有的db或者是表都会查…...

centos安装了curl却报 -bash: curl: command not found

前因 我服务器上想用curl下载docker-compress&#xff0c;发现没有curl命令&#xff0c;就去下载安装&#xff0c;安装完成之后&#xff0c;报-bash: curl: command not found 解决方法 [rootcentos ~]# rpm -e --nodeps curl warning: file /usr/bin/curl: remove failed: …...

Re58:读论文 REALM: Retrieval-Augmented Language Model Pre-Training

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称&#xff1a;REALM: Retrieval-Augmented Language Model Pre-Training 模型名称&#xff1a;Retrieval-Augmented Language Model pre-training (REALM) 本文是2020年ICML论文&#xff0c;作者来自…...

java的json解析

import com.alibaba.fastjson.*; public class JsonParser { public static void main(String[] args) { String jsonStr "{\"name\":\"John\", \"age\":30}"; // JSON字符串示例 // 将JSON字符串转换为JSONObject对象 JSONObje…...

Spring事务失效的几种情况

Spring事务失效的几种情况 1、未被Spring管理的类中的方法 这种情况是指&#xff1a;没有在类上添加Service、Repository、Component等注解将类交由Spring管理&#xff0c;然后该类中还有加上了Transactional注解 例如&#xff1a; Service //如果没有添加Service这个注解…...

filter的用法与使用场景:筛选数据

//this.allCollectorList:后台给定的所有可供选择数据 //this.collectorData:目前已经存在选中列表中的数据//目前已经存在选中列表中的数据id getSelIdList() {let eIdList = []this.collectorData.forEach(row => {eIdList.push(row.id)})return eIdList },//在中的数据…...

ClickHouse(18)ClickHouse集成ODBC表引擎详细解析

文章目录 创建表用法示例资料分享参考文章 ODBC集成表引擎使得ClickHouse可以通过ODBC方式连接到外部数据库. 为了安全地实现 ODBC 连接&#xff0c;ClickHouse 使用了一个独立程序 clickhouse-odbc-bridge. 如果ODBC驱动程序是直接从 clickhouse-server中加载的&#xff0c;那…...

网络攻击(一)--安全渗透简介

1. 安全渗透概述 目标 了解渗透测试的基本概念了解渗透测试从业人员的注意事项 1.1. 写在前面的话 在了解渗透测试之前&#xff0c;我们先看看&#xff0c;信息安全相关的法律是怎么样的 中华人民共和国网络安全法 《中华人民共和国网络安全法》由全国人民代表大会常务委员会…...

视频号小店资金需要多少?

我是电商珠珠 视频号团队于22年7月发展了自己的电商平台-视频号小店&#xff0c;相比于抖音电商来讲&#xff0c;可以有效的将公域流量转化为私域&#xff0c;对于商家来说&#xff0c;是一件利好的事情。 可以有效的提高客户的黏性&#xff0c;增加店铺回头客。 有很多想要…...

机器学习项目精选 第一期:超完整数据科学资料合集

大噶吼&#xff0c;不说废话&#xff0c;分享一波我最近看过并觉得非常硬核的资源&#xff0c;包括Python、机器学习、深度学习、大模型等等。 1、超完整数据科学资料合集 地址&#xff1a;https://github.com/krishnaik06/The-Grand-Complete-Data-Science-Materials Pytho…...

档案数字化管理可以提供什么服务?

档案数字化管理提供了便捷、高效和安全的档案管理服务&#xff0c;帮助组织更好地管理和利用自己的档案资源。 具体来说&#xff0c;专久智能档案数字化管理可以提供以下服务&#xff1a; 1. 档案扫描和数字化&#xff1a;将纸质档案通过扫描仪转换为数字格式&#xff0c;包括文…...

第一周:AI产品经理跳槽准备工作

一、筛选意向行业 因素1:行业发展情况 1. 行业发展情况和政策 待补充 2. AI人才市场情况 报告下载:待补充 2023年2⽉,ChatGPT爆⽕在脉脉引发各界搜索和热议,当⽉,“AIGC”、“⼈⼯智能”、“ChatGPT”、“⼤模型”等相关词汇搜索指数达到459.31,同⽐增⻓超5.4倍,内…...

基于核心素养高中物理“深度学习”策略及其教学研究课题论证设计方案

目录 一、课题的提出及意义 二、课题的核心概念及其界定...

通过 Java 17、Spring Boot 3.2 构建 Web API 应用程序

本心、输入输出、结果 文章目录 通过 Java 17、Spring Boot 3.2 构建 Web API 应用程序前言Spring Boot 3.2 更新了哪些内容Java 17 新特性构建步骤花有重开日,人无再少年实践是检验真理的唯一标准通过 Java 17、Spring Boot 3.2 构建 Web API 应用程序 编辑:简简单单 Online…...

go原生http开发简易blog(一)项目简介与搭建

文章目录 一、项目简介二、项目搭建前置知识三、首页- - -前端文件与后端结构体定义四、配置文件加载五、构造假数据- - -显示首页内容 代码地址&#xff1a;https://gitee.com/lymgoforIT/goblog 一、项目简介 使用Go原生http开发一个简易的博客系统&#xff0c;包含一下功能…...

白石桥做网站公司/seo系统推广

原标题&#xff1a;Python爬虫开发&#xff1a;反爬虫措施以及爬虫编写注意事项反爬虫的几重措施1.IP限制如果是个人编写的爬虫&#xff0c;IP可能是固定的&#xff0c;那么发现某个IP请求过于频繁并且短时间内访问大量的页面&#xff0c;有爬虫的嫌疑&#xff0c;作为网站的管…...

企业做网站公司排名/杭州seo工作室

什么是功能安全(FS)&#xff1f; 在现代工业控制领域中&#xff0c;可编程电子硬件、软件系统的大量使用&#xff0c;大大提升了自动化程度。但由于设备设计中的缺失&#xff0c;以及开发制造中风险管理意识的不足&#xff0c;这些存在设计缺陷的产品大量流入相关行业的安全控制…...

建设一个网站要多少钱上永远的吗/中国营销策划第一人

首先找一个号 在企业信息里面查看到大量的企业名称和组织机构代码 随后去找回密码那 可以看到是直接显示了用户名和密码 随后去登录 可以看到大量的工程信息个企业注册信息 ​转载于:https://www.cnblogs.com/wh4am1/p/6664781.html...

网站在公司做有什么要求吗/好的建站网站

论文大纲&#xff1a;一、猫慢性肾衰的病因1. 饮食因素 2. 环境因素 3. 免疫系统因素二、猫慢性肾衰的临床表现1. 尿毒症状 2. 营养代谢异常 3. 肾小球肾炎三、猫慢性肾衰的诊断1. 尿常规检查 2. 血液检查 3. 影像学检查四、猫慢性肾衰的治疗1. 药物治疗 2. 营养支持 3. 血液净…...

张家口远大建设集团网站/公司网络推广排名定制

2019独角兽企业重金招聘Python工程师标准>>> 最近由于工作忙以及急躁的心理。在写代码或者做事上&#xff0c;频频犯错。于是乎想了一个简单的记录犯错的软件。这个软件是基于autohotkey windows上的小脚本。同时我也是用DropBox来同步这个小脚本和错误记录&#xf…...

唐山做网站优化公司/湘潭网站设计

批量下载经常会有将文件打包下载的需求&#xff0c;比如批量下载图片 今天就分享一个java将文件夹中的所有文件&#xff08;包括文件夹&#xff0c;递归&#xff09;打包成压缩包&#xff08;支持rar和zip&#xff09; 先看效果&#xff0c;测试目录 李四文件夹下有文件夹和…...