2.数据结构 顺序表(自留笔记)

文章目录

  • 一.静态顺序表:长度固定
  • 二.动态顺序表
    • ==1.下面证明原地扩容和异地扩容代码如下:==
    • ==2.下面是写一段Print,打印数字看看:==
    • ==3.头插==
    • ==4.尾删==
    • ==5.头删==
    • ==6.越界一定会报错吗==
    • ==7.下标插入==
    • ==8.下标删除==
    • ==9.查找数字==
    • ==10.应用:利用顺序表写一个菜单==

顺序表就是数组,特殊要求:顺序表只能从头开始连续存储,分为静态存储和动态存储

一.静态顺序表:长度固定

在这里插入图片描述
里面是静态数组,size表示存的多少个数据。
弊端:不知道需要多少,N给小了不够用,N给大了浪费。

二.动态顺序表

在这里插入图片描述
尾插法,size++

扩容时用到realloc
在这里插入图片描述

区分realloc原地扩容和异地扩容
原地扩容返回的是和原来一样的地址
异地扩容返回的是和原来不同的地址,并且把原来的空间free掉

http://t.csdnimg.cn/CKsJs

在这里插入图片描述

先用malloc开辟空间。
注意:在使用malloc函数之前我们一定要计算字节数,malloc开辟的是用户所需求的字节数大小的空间。

写个程序通过地址变化判断是原地扩还是异地扩时
在这里插入图片描述

1.下面证明原地扩容和异地扩容代码如下:

❗SeqList.h如下:

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
//作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)
typedef int SLDataType;//定义顺序表
typedef struct SeqList
{//定义指针SLDataType* a;//记录有效数据个数int size;//记录空间大小int capacity;}SL;//初始化函数
void SLInit(SL* ps1);
void SLDestroy(SL* ps1);
void SLCheckCapacity(SL* ps1);//写一个公共逻辑
//尾插
void SLPushBack(SL* ps1, SLDataType x);

❗SeqList.c如下:

#include"SeqList1.h"
void SLInit(SL* ps1)
{assert(ps1);ps1->a = NULL;ps1->size = 0;ps1->capacity = 0;
}void SLDestroy(SL* ps1)
{assert(ps1);if (ps1->a!=NULL){free(ps1->a);ps1->a = NULL;ps1->size = 0;ps1->capacity = 0;}
}void SLCheckCapacity(SL* ps1)//写一个公共逻辑
{assert(ps1);if (ps1->size == ps1->capacity){int newCapacity = ps1->capacity == 0 ? 4 : ps1->capacity * 2;//如果ps1->capacity == 0为真则newCapacity=4,如果为假,则newCapacity=ps1->capacity*2SLDataType* tmp = (SLDataType*)realloc(ps1->a, sizeof(SLDataType) * newCapacity);if (tmp == NULL){perror("realloc fail");return;}ps1->a = tmp;ps1->capacity = newCapacity;}
}
void SLPushBack(SL* ps1, SLDataType x)
{SLCheckCapacity(ps1);//调用ps1->a[ps1->size] = x;ps1->size++;}

原地扩容(Test.c):
在这里插入图片描述
异地扩容(Test.c):
在这里插入图片描述

2.下面是写一段Print,打印数字看看:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.头插

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
打印数字查看尾插头插区别
在这里插入图片描述
头插效率高吗?
头插的时间复杂度是O(n),如果头插n个数据的话,那么时间复杂度是O(n^2),如果是尾插n个数据,则尾插的时间复杂度是O(n),尾插效率更高。

4.尾删

在这里插入图片描述
不用释放后面的空间
可以看到第三行比第二行尾巴后面少了9
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

因为尾删容易导致删空了的数据表还继续尾删的情况,所以要进行检查。
方法一空了直接return
方法二暴力检查,空了直接报错
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5.头删

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.越界一定会报错吗

不一定,在C语言越界读取中不会,而越界写可能会报错,如:
在这里插入图片描述

7.下标插入

这里的pos是下标
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
注意:
在这里插入图片描述

最后一行那里显示了报错的原因出处,我们找到出处,发现是assert的警告
在这里插入图片描述

8.下标删除

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

9.查找数字

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

10.应用:利用顺序表写一个菜单

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/649585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:用户切换指令su

相关文章 Linux专栏https://blog.csdn.net/weixin_45791458/category_12234591.html su是一个常用的用户切换命令&#xff0c; 用于在不同的用户身份之间切换&#xff0c;下面是它的用法。 用法&#xff1a; su [-] [-lmpVh] [-s shell] [-c command] [-w list] [username] 选…

【网络协议测试】畸形数据包——圣诞树攻击(DOS攻击)

简介 TCP所有标志位被设置为1的数据包被称为圣诞树数据包&#xff08;XMas Tree packet&#xff09;&#xff0c;之所以叫这个名是因为这些标志位就像圣诞树上灯一样全部被点亮。 标志位介绍 TCP报文格式&#xff1a; 控制标志&#xff08;Control Bits&#xff09;共6个bi…

淘宝扭蛋机小程序:新时代的互动营销与娱乐体验

随着科技的快速发展&#xff0c;小程序已经成为人们日常生活中不可或缺的一部分。在众多的小程序中&#xff0c;淘宝扭蛋机小程序以其独特的互动性和趣味性&#xff0c;吸引了大量用户。本文将深入探讨淘宝扭蛋机小程序的特色、用户体验以及未来发展。 一、淘宝扭蛋机小程序的…

API网关-Apisix RPM包方式自动化安装配置教程

文章目录 前言一、简介1. etcd简介2. APISIX简介3. apisix-dashboard简介 二、Apisix安装教程1. 复制脚本2. 增加执行权限3. 执行脚本4. 浏览器访问5. 卸载Apisix 三、命令1. Apisix命令1.1 启动apisix服务1.2 停止apisix服务1.3 优雅地停止apisix服务1.4 重启apisix服务1.5 重…

jenkins发布失败

今天用jenkins发布项目时失败了&#xff0c;而前几天还好好的。 云控制台看了下&#xff0c;发现根本就没打包。 报错如下&#xff1a; 从控制台可以看出&#xff0c;项目依赖没有下载下来&#xff0c;所以打包失败了。 根本原因是&#xff1a;在配置中给yarn指定的淘宝仓库…

python爬虫采集下载中国知网《出版来源导航》论文文献下载_PDF文档_数据采集知网爬虫论文Python3

时隔一年&#xff0c;很久没更新博客了。今天给大家带来一个python3采集中国知网 &#xff1a;出版来源导航 这个是网址是中国知网的&#xff0c;以下代码仅限于此URL&#xff08;出版来源导航&#xff09;采集&#xff0c;知网的其他网页路径采集不一定行&#xff0c;大家可以…

活字格V9获取图片失败bug,报错404,了解存储路径,已改为批量上传和批量获取

项目场景&#xff1a; 问题描述 原因分析&#xff1a; 解决方案&#xff1a; 完成了批量上传功能&#xff0c;这插件真的很方便 于是写了个批量获取附件的js代码&#xff0c;我真厉害 项目场景&#xff1a; 活字格V9版本获取图片链接Upload 【9.0.103.0】图片上传的存储路…

操作系统(4)---虚拟机

虚拟机又叫虚拟机管理程序或者虚拟机监控程序&#xff08;Virtual Machine Monitor/Hypervisor&#xff0c;VMM&#xff09;&#xff0c;使用虚拟化技术&#xff0c;将一台物理机器虚拟化为多台虚拟机器 (Virtual Machine,VM)&#xff0c;每个虚拟机器都可以独立运行一个操作系…

C语言中各种类型指针所能访问的字节

其实学习语言的最简单的方法就是学习代码&#xff0c;所以下面来看一段代码就明白了&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int a 0x11223344;int* pa &a;char* pc &a;double* pd &a;printf("%p\n", …

数据结构——链式二叉树(2)

目录 &#x1f341;一、二叉树的销毁 &#x1f341;二、在二叉树中查找某个数&#xff0c;并返回该结点 &#x1f341;三、LeetCode——检查两棵二叉树是否相等 &#x1f315;&#xff08;一&#xff09;、题目链接&#xff1a;100. 相同的树 - 力扣&#xff08;LeetCode&a…

【干货】【常用电子元器件介绍】【电阻】(二)--敏感电阻器

声明&#xff1a;本人水平有限&#xff0c;博客可能存在部分错误的地方&#xff0c;请广大读者谅解并向本人反馈错误。   电子电路中除了采用普通电阻器外&#xff0c;还有一些敏感电阻器&#xff08;如热敏电阻器、压敏电阻器、光敏电阻器等&#xff09;也被广泛地应用。然而…

C# 使用 SapNwRfc 调用SAP RFC

好久没写过相关代码&#xff0c;今天又来贡献一篇 C# 使用 SapNwRfc 调用SAP RFC。用VS2022的WINFORM应用程序&#xff0c;使用NuGet中的SapNwRfc类库&#xff0c;call SAP系统中的RFC&#xff0c;传入7个参数&#xff0c;得到RFC返回的2张表的数据。 一、VS2022中新建WINFORM…

Nodejs前端学习Day1_补档

我给day1搞没了&#xff0c;还是觉得该补一个&#xff0c;有用 文章目录 前言一、学习目标二、学习目录三、为什么JavaScript代码可以在浏览器中运行四、为什么JavaScript可以操作DOM和BOM五、浏览器中的JavaScript运行环境总结 前言 补档 一、学习目标 二、学习目录 三、为什…

RustDesk私有化部署,自建远程桌面搭建教程

以linux操作系统为例&#xff1a; 解压安装 # 使用wget进行下载1.1.8-2版本&#xff08;最新版本可以看上述发布地址&#xff09; wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.8-2/rustdesk-server-linux-amd64.zip # 使用unzip解压 unzip rust…

Hive3.1.3基础

参考B站尚硅谷 目录 什么是HiveHive架构原理 Hive安装Hive安装地址Hive安装部署安装Hive启动并使用Hive MySQL安装安装MySQL配置MySQL 配置Hive元数据存储到MySQL配置元数据到MySQL Hive服务部署hiveserver2服务metastore服务编写Hive服务启动脚本&#xff08;了解&#xff09…

EventSource 长链接执行

EventSource 说明文档MDN 其他参考文档 一、利用node启服务 import fs from fs import express from express const app express() // eventSource 仅支持 get 方法 // 服务器端发送的数据必须是纯文本格式&#xff0c;不能是二进制数据。 app.get(/api, (req, res) > …

table用position: sticky固定多层表头,滑动滚动条border边框透明解决方法

问题&#xff1a;我们发现&#xff0c;只要设置了border边框&#xff0c;这个位置滑动有内容经过就会出现如图的情况。 解决的方法&#xff1a;用outline&#xff08;轮廓&#xff09;替代border,以达到我们想要的样式。 table thead tr {border: none;outline-color: #fff;ou…

Redis(八)哨兵机制(sentinel)

文章目录 哨兵机制案例认识异常 哨兵运行流程及选举原理主观下线(Subjectively Down)ODown客观下线(Objectively Down)选举出领导者哨兵选出新master过程 哨兵使用建议 哨兵机制 吹哨人巡查监控后台master主机是否故障&#xff0c;如果故障了根据投票数自动将某一个从库转换为新…

excel 设置密码保户

目录 前言设置打开密码设置编辑密码 前言 保户自己的数据不被泄漏是时常有必要的&#xff0c;例如财务数据中最典型员工工资表&#xff0c;如果不设置密码后果可想而知&#xff0c;下面我们一起来设置excel查看密码和编辑密码。我用的是wps,其它版本类似&#xff0c;可自行查资…

已经安装了CUDA,但是cmd执行nvcc -V报错:nvcc不是内部或外部命令,也不是可运行的程序或批处理文件

请注意&#xff0c;查看版本的指令是nvcc --version或nvcc -V&#xff0c;注意区分大小写 如果还是不能输出版本信息&#xff0c;那这个原因可能是由于没有在系统环境变量里添加CUDA。 先来看看CUDA是否安装成功&#xff1a; 在CUDA的安装路径下找到bandwidthTest.exe 和 devi…