数据结构自学笔记一、线性表

数据结构自学笔记三、队列 数据结构自学笔记三、队列队列的定义队列的应用顺序存储结构的队列普通队列循环队列 队列的定义 队列是只能在一端进行添加元素的操作(入队),在另一端进行删除元素操作(出队)的线性表。队列元素的特点是“先进先出”。 现实生活中大家都排过队,如果有新来的想要排队,ta必须站在最后一个,不然就是插队了,这是违反规则的;而排在第一个的人如果办完了事情,ta可以直接离开。不过比较坑的是,队列不允许排在中间的人中途离队,意思就是说,你要么别排,要么就一站到底。 队列的应用 还是小学的时候,在我们班流传着这样一种让电脑死机的 阅读详情

说在前面的一些废话

本人数据结构小白一名,上了大学才开始接触编程语言,到现在也不过一年的时间,并没有很高的水平。目前在自学数据结构,希望可以在大二上学期上“数据结构与算法分析”这门课前,可以有一定的基础,不至于跟不上身边的大佬同学。
之前一直在纠结,和编程相关的笔记,究竟是记在纸质笔记本上好,还是用软件画思维导图好。听了一位朋友的建议后,决定用博客的形式来记笔记。由于初学,难免挂一漏万,希望大家指正批评(如果有人看的话hhh)。
这个系列的博客可能主要是写给自己看的,所以字里行间如果出现了自嘲的话语,还望见谅。

线性表的定义

线性表:零个或多个数据元素的 有限 序 列
划重点:有限+有序

程序在设计上应当是可以在有限步内完成的,因此供程序使用的线性表的元素也应当是有限的。
此外,线性表的元素还应当是有序的。或者可以理解为线性表的元素间是存在关系的。

我们把线性表中元素的个数称为线性表的长度,若值为0则表示该线性表为空表

一个线性表通常要实现的功能(函数模块)

或许可以拿excel表格来举例子?

1.初始化一个线性表(新建一个excel文件)

2.判断线性表是否为空,通过返回值来告诉程序或者使用者(右键一个excel文件查看属性,如果里面没有任何数据,大小应该为0KB)

3.清空一个线性表(删除一个excel文件)就像如果我们想要释放excel文件占据的内存,不光要移进回收站,还要在回收站内将其彻底删除,要清空一个线性表(以链表为例),我们不能简单的把其头指针赋值成NULL,而要使用free函数将所有节点占用的内存一个个释放

4.获取某个元素的值(将表格中某个单元格的值导出)

5.查找某个值在线性表中的对应元素,如果找到了则返回该元素所在位置,没找到就返回 0 表示失败(excel中的查找功能,找到的话会自动定位到该单元格,没找到就弹出消息告诉使用者)
PS:或许还要考虑不只找到一个的情况?

6.插入或删除某个元素(插入或删除某个单元格、行、列)

7.获取线性表的长度(excel左下角多少行、列、字数)

说实话这些功能其实应该挺好理解的,拿excel举例子有点多余。。。😞

线性表的存取与存储结构

线性表的存取

存取可以分为顺序存取与随机存取。(在我的知识范围内)

先说说顺序存取吧,顺序存取的意思就是,如果你想要获得线性表任意一个位置的元素的内容,你都要从第一个元素开始遍历,直到找到你需要的元素。典型例子就是单链表,由于你不知道某一个节点的地址,你只能从前一个节点的指针域获得下一个节点的地址。使用这种存取方式的线性表读取某一个节点的信息的效率较低,算法的时间复杂度为O(n)

另外一种就是随机存取了。通俗地来说,如果你获取线性表某一个元素的数据内容的时间与这个线性表的长度无关,也即是算法的时间复杂度为O(1),那就属于随机存取。典型例子就是数组,你可以通过下标直接访问你想要查看的元素,而不需要从头开始。当然,也许有人会和我一开始想的一样:数组怎么是随机存取呢?我记得数组元素的地址是连续的呀?地址连续与否其实涉及到的是存储结构,这一点我们很快就会提到。

我认为随机存取是相对顺序存取来说的,顺序存取强调的是数据读取的有序性,即我一定是从线性表的某一头开始,沿着线性表元素间的 关系 按顺序读取;而随机存取则是,使用者可以直接读取想要的某一个元素的信息,而不需要从某一个固定的元素开始,也不用按照顺序一路找下去,至于这个元素在线性表的什么位置,这对程序来说是 随机 的,每个元素都有可能。

线性表的存储

线性表的存储分为随机存储和顺序存储。

既然上一节提到了顺序存储的问题,就先讲讲顺序存储吧。我们知道,程序在运行过程中是需要不断占用磁盘空间的,比如定义一个变量,我们的程序需要“记住”它在运行中的值是多少,就需要在定义时就给它一块磁盘空间,用来记录它的值。
在现实生活中,每个合法的居所都是有地址的,比如小明家住在XX小区X号楼X单元,通过地址我们可以找到小明的家。同样的,在程序中同样有着地址一说,我们可以通过地址找到变量的存储空间。
而顺序存储结构,即是地址连续的若干存储空间。数组在这一点上是“顺序”的。

#include <iostream>
using namespace std;
int main()
{
   
   
	int a[]={
   
   1,2,3};
	for(int i=0;i<3;i++)
	{
   
   
		cout<<&a[i]<<endl;
	}
	return 0;
 } 

数据结构笔记(C++实现) 数据结构笔记(大话数据结构)**序**1、数据结构绪论基本术语2、算法2.1、算法的特性2.2、算法的设计要求 序 这是我的第一篇在网络上记载的笔记,实是记录在学习过程中的一些心得体会。毕竟逐渐的发现学习的过程中没有记录,即使当时认真学过,一段时间之后就会变成过眼云烟。本科学了几年机械,从无感到热爱再到这个专业成为别人口中的笑柄。回头想想,其实错不在某个专业学什么,也不在这个专业下的学生,只是风向不同而已。在此之前,已经学习过吴恩达的ml和黑马的c++,虽然课是听完了,但也就大致摸索到个概念而已。并不是说这 阅读详情

相关推荐

数据结构理论附加笔记

文章目录: 第一章 绪论 1.1高效学习方法 1.2数据结构基本概念 1.3算法和算法分析 第二章 线性表 2.1线性表的定义和基本操作 2.2 线性表的实现 2.2.1顺序存储 2.2.2链式存储 2.2.3线性表的应用 第三章 栈和队列 3.1栈和队列的基本概念 3.2栈和队列的顺序存储结构 3.3栈和队列的链式存储结构 3.4栈和队列的应用 3.5特殊矩阵的压缩存储 第四章 树与二叉树 4.1树的基本概念 4.2 二叉树 4.2.1...

刘鑫磊 957

5G 网络的移动性管理上下文对比介绍

5G 网络的移动性管理上下文对比介绍 4G/5G MM移动性管理机制对比 5G引入了新移动性管理状态,通过mobility pattern(移动方式)实现按需的移动性管理等。 MM的相关状态分为一下几种: RM状态(用户注册管理 注册态/非注册态)和CM状态(用户连接态/空闲态)独立;RM状态标识UE是否注册到网络,CM状态标识UE和核心网的信令连接是否存在。 RAN侧引入RRC-inactive state:UE(用户端)对于CN(核心网)而言处于连接态,对RAN(接入网)而言处于Ld..

m0_59032675的博客 4818

别再被网站风控了!手把手教你修改Chromium源码,实现TLS指纹随机化

本文详细介绍了如何通过修改Chromium源码实现TLS指纹随机化,有效规避网站风控。文章深入解析了TLS指纹(如JA3指纹)的工作原理,并提供了具体的源码修改步骤和编译方法,帮助开发者突破高级反爬技术。通过动态打乱加密套件顺序,实现每次请求生成不同的指纹,显著提升自动化工具的隐蔽性。

weixin_28712661的博客 426

基于ESP32-WROOM的智能蓝牙电压电流监测与远程控制系统设计

本文介绍了基于ESP32-WROOM的智能蓝牙电压电流监测与远程控制系统设计。该系统集成了INA219传感器和OLED显示屏,通过蓝牙实现无线数据传输和远程控制,适用于智能家居能耗监控和工业设备管理,具有成本低、精度高、功耗优化等优点。

qsc901234的博客 203

中颖单片机SH79F3213正弦波矢量的电动车小毛驴控制器量产资料

中颖单片机SH79F3213正弦波矢量的电动车小毛驴控制器量产资料 中颖单片机SH79F3213 制作的电动车小毛驴控制器量产资料,已量产十几万片,拿到手即可量产 1、提供原理图 2、提供PCB图 3、提供C语言源代码程序 4、提供清单 ...

m0_69036675的博客 4525

RK3568平台(电源篇)电源域IO配置

在kernel之前需要修改电源域,主控电源域的IO电平要与对接外设芯片的IO电平匹配,还要注意软件的电压配置要跟硬件的电压一致,否则,最坏的情况可能会导致IO的损坏。其实就是管理 IO 输出的电平;假如硬件上 IO 电源域配置为 3.3V,则 IO 输出最大电平为 3.3V;同理 IO 电源域硬件配置为 1.8V,则 IO 输出最大电平是 1.8V;这样有利于 IO 电平的灵活配置;

weixin_49303682的博客 3478

UG NX二次开发-博客文章速览

写了一些UG NX二次开发的心得体会,内容较多,感觉不好查找相应的内容,所以决心把导航写出来,方便自己也方便读者。主专栏是“”,C#专栏为 : “” ,Python专栏为 : “这三个专栏都会持续的更新。如果有需要咨询或者学习讨论的,请私信博主或者加QQ群:749492565。博主几乎每天都在。

GimiGimmy 3714

Codex入门00-初识神器(小白入门:到底什么是Codex CLI,和ChatGPT写代码有什么不同?)

OpenAI Codex CLI 是 OpenAI 于2025年推出的终端原生AI编程代理,不是在网页里聊天写代码,而是直接在你的终端里自主读代码、改文件、跑命令。它拥有三种安全模式、/goal 持久化任务、云端沙箱执行等独特能力。本文从零介绍 Codex CLI 的核心概念、与 ChatGPT 写代码的本质区别、典型使用场景和费用说明,让你全面认识这个改变开发方式的神器。

yueyeguzhuo的专栏 301

Trae 保姆级使用指南,零基础小白也能实现编程。

Trae 使用指南 Trae AI 使用 零基础编程 满血版 DeepSeek-R1&V3 AI IDE 深度理解中文开发场景 傻瓜式编程 编程入门 开发入门

Mr.L-OAM的博客 5815

Camera2Demo

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

下一篇: 数据结构自学笔记二、栈
kyc19
博客等级 码龄6年 4粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值