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

顺序表学习笔记(基础)

 属于线性表旗下的一种,所以专门存储 one-to-one 关系的数据。

顺序表提供的具体实现方案是:将数据全部存储到一整块内存空间中,数据元素之间按照次序挨个存放。(类似数组)

顺序表中除了存储数据本身的值外,而一般提供了以下数据:

  • 顺序表的最大存储容量:即顺序表最多可以存储的数据量
  • 顺序表的长度:目前顺序表中存储的数据个数
#include <stdio.h>
#include <stdlib.h>#define MAXSIZE 5 //对MAXSIZE进行宏定义,表示顺序表的最大容量/*结构体*/
typedef struct {int* head; //利用指针定义一个长度不确定的“数组”(动态数组)int length; //记录顺序表的长度int size; //记录顺序表的存储容量
}SeqList;
/*初始化*/
void init(SeqList* sl) 
{//构造一个空的顺序表,动态申请存储空间sl->head = (int*)malloc(MAXSIZE * sizeof(int)); //初始化head数组//如果申请失败,作出提示并直接退出程序if (!sl->head) //判断head数组是否完成初始化{printf("初始化失败\n");exit(0);}sl->length = 0;//空表的长度初始化为0sl->size = MAXSIZE;//空表的初始存储空间为MAXSIZE
}
/*判空*/
int empty(SeqList* sl)
{if (sl->length == 0)return 1;elsereturn 0;
}
/*长度*/
int length(SeqList* sl)
{return sl->length;
}
/*建立*/
int creat(SeqList* sl, int creat[], int extent) //顺序表,数组,长度
{if (extent > MAXSIZE){printf("空间不够\n");return 0;}for (int i = 0; i < extent; i++){sl->head[i] = creat[i];}sl->length = extent;return 1;
}
/*插入*/
int insert(SeqList* sl, int index, int value) //顺序表,索引,插入值
{if (sl->length == MAXSIZE){printf("上溢出错误\n");return 0;}if (index < 1 || index > sl->length + 1){printf("插入位置错误(从1开始)\n");return 0;}for (int i = sl->length; i >= index; i--){sl->head[i] = sl->head[i - 1];}sl->head[index - 1] = value;sl->length++;return 1;
}
/*删除*/
int delete(SeqList* sl, int index, int value) //顺序表,索引,删除值
{if (sl->length == 0){printf("发生下溢错误\n");return 0;}if (index > sl->length || index < 1){printf("删除位置错误\n");return 0;}value = sl->head[index - 1]; //把要删除的数据返回for (int i = index; i <= sl->length; i++){sl->head[i - 1] = sl->head[i];}sl->length--;return 1;
}
/*修改*/
int set(SeqList* sl, int index, int value)
{if (index < 1 || index > sl->length){printf("修改位置错误\n");return 0;}sl->head[index-1] = value;return 1;
}
/*位查找*/
int get(SeqList* sl, int index, int* result)
{if (index < 1 || index > sl->length){printf("查找位置错误\n");return 0;}else{*result = sl->head[index - 1];return 1;}
}
/*值查找(查出返回索引值)*/
int locate(SeqList* sl, int value) 
{for (int i = 0; i < sl->length; i++){if (sl->head[i] == value){return i + 1;}}return 0;
}
/*输出*/
void display(SeqList* sl)
{for (int i = 0; i < sl->length; i++) {printf("%d", sl->head[i]);//if (i == sl->length - 1){printf("%d", sl->head[i]);}//else{printf("%d,", sl->head[i]);}}printf("\n");
}
/*主函数*/
int main() {int value = 0;SeqList sl = { NULL, 0, 0 }; //属性初始化int data[] = { 1,2,3,4 }; //数据init(&sl); //初始化if (empty(&sl)){printf("目前顺序表为空,长度为:%d\n", length(&sl));}creat(&sl, data, 4); //建立printf("顺序表建立:");display(&sl); //测试建立(第一次输出)insert(&sl, 1, 0); //插入printf("顺序表中存储的元素分别是:\n"); //提示display(&sl); //测试插入delete(&sl, 1, value); //删除display(&sl); //测试删除set(&sl, 4, 0); //修改display(&sl); //测试修改int index = 1, sult = 0; //临时值sultget(&sl, index, &sult); //位查找printf("%d 索引值的位查找的数据值是:%d\n", index, sult); //输出位查找的值printf("%d 数据值的值查找的索引值是:%d\n", 0, locate(&sl, 0)); //输出值查找的值printf("尾插入:\n");insert(&sl, 5, 5); //尾插入display(&sl); //测试尾插入free(sl.head);//释放申请的堆内存system("pause"); //暂停黑窗口return 0;
}

顺序表和数组的关系及区别

顺序表 VS 数组
顺序表(存储结构)数组(数据类型)
区别顺序表侧重表达了数据之间保持了 “一对一” 的逻辑关系数组是顺序表在实际编程中的一种实现方式
相同数据存储在一整块内存空间中,数据元素之间紧挨着存放

相关文章:

顺序表学习笔记(基础)

属于线性表旗下的一种&#xff0c;所以专门存储 one-to-one 关系的数据。 顺序表提供的具体实现方案是&#xff1a;将数据全部存储到一整块内存空间中&#xff0c;数据元素之间按照次序挨个存放。&#xff08;类似数组&#xff09; 顺序表中除了存储数据本身的值外&#xff0…...

PyTorch入门学习(十九):完整的模型验证套路

目录 一、图像加载和数据转换 二、模型加载 三、前向推理 四、结果解释 一、图像加载和数据转换 首先&#xff0c;需要加载待验证的图像&#xff0c;并将其转换为模型期望的输入大小和数据类型。以下是加载图像并进行数据转换的示例&#xff1a; import torch import tor…...

YOLO目标检测数据集大全【含voc(xml)、coco(json)和yolo(txt)三种格式标签+划分脚本+训练教程】(持续更新建议收藏)

一、作者介绍&#xff1a;资深图像算法工程师&#xff0c;YOLO算法专业玩家&#xff1b;擅长目标检测、语义分割、OCR等。 二、数据集介绍&#xff1a; 真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;分享的绝大部分数据集已应用于各种实际落地项目。所有数据…...

PHP保存时自动删除末尾的空格,phpstorm自动删除空白字符串

最近有个活儿&#xff0c;修改一个财务软件。 修改后给客户验收的过程中&#xff0c;客户反应有一个txt表格导出功能不能用了。之前是好的。 这次是新增&#xff0c;老的这个功能碰都没碰过&#xff0c;怎么能有问题呢&#xff1f;我心里OS 下班后我立马用系统导出TXT&#…...

2022 icpc杭州站 C. No Bug No Game - 背包dp

题面 分析 能拿整个 p i p_i pi​的就拿整个的&#xff0c;不能拿了可以拿一部分的&#xff0c;因此可以分成0和1两种情况&#xff0c;0表示拿整个的&#xff0c;1表示还可以拿部分的&#xff0c;两种情况放在一起做一遍01背包&#xff0c;找到最大价值。 代码 #include &l…...

Temp directory ‘C:\WINDOWS\TEMP‘ does not exist

问题描述 解决方法 管理员权限问题&#xff0c;进入temp文件夹更改访问权限即可。 点击 temp文件夹 属性 -> 安全 -> 高级 -> 更改主体Users权限 给读取和写入权限 参考博客 开发springboot项目时无法启动Temp directory ‘C: \WINDOWS\TEMP‘ does not exist...

【单片机基础小知识-如何通过指针来读写寄存器】

寄存器的本质就是内存&#xff0c;RAM&#xff0c;而指针是可以对内存进行操作的&#xff0c;因此可以通过指针来读写寄存器。 如何读取以下一片地址&#xff1a; 步骤1、首地址 结构体&#xff0c;它所占用的内存空间大小与它内部成员有关。 构造一个28字节的类型 type…...

CountDownTimer倒计时使用

CountDownTimer倒计时使用 CountDownTimer使用 CountDownTimer 代码片. // An highlighted blockprivate MyCountDownTimer timer;private final long TIME 7 * 1000L;private final long INTERVAL 1000L;private class MyCountDownTimer extends CountDownTimer{/*** p…...

MySQL索引事务存储引擎

索引&#xff1a;是一个排序的列表 列表中存储的是索引的值和包含这个值数据所在行的物理地址 索引的作用 利用索引数据库可以快速定位 大大加快查询速度表的数据很大 或查询需要关联多个表 使用索引也可以查询速度加快表与表之间的连接速度使用分组和排序时可以大大减少时间提…...

【服务器使用】vscode winscp进行服务器容器连接(含修改初始密码)

1&#xff1a;获取docker的登陆信息 例如节点&#xff08;host&#xff09;、端口&#xff08;port&#xff09;、密码&#xff08;passwd&#xff09;等信息&#xff0c;这个自己找组内的前辈获取即可 2&#xff1a;配置config文件 找到vscode里面ssh处的config文件 人工找…...

Go和JavaScript结合使用:抓取网页中的图像链接

前言 在当今数字化时代&#xff0c;数据是金钱的源泉&#xff0c;对于许多项目和应用程序来说&#xff0c;获取并利用互联网上的数据是至关重要的。其中之一的需求场景是从网页中抓取图片链接&#xff0c;这在各种项目中都有广泛应用&#xff0c;特别是在动漫类图片收集项目中…...

通信协议---串口、RS232、RS485

串口 起始位&#xff1a;低电平(0) 数据位&#xff1a;通常为8位 校验位&#xff1a;数据位校验位中为1的位是奇或偶 停止位&#xff1a;高电平(1) 5V TTL电平标准 2.4V~5V&#xff1a;逻辑1; 0~0.4V:逻辑0。 图中是对字符’c’进行数据传输&#xff0c;十进制99&#xff0c;…...

UE5 c++将自定义UserWdiget添加到对应菜单栏

前言&#xff1a; 为了实现与UserWidget一致的右键添加&#xff0c;便有了此章 注&#xff1a;这里使用的是UE5.3 目标内容&#xff1a; 这里可以参考UserWidget的源码&#xff0c;拷贝一份属于自己的就ok&#xff08;本篇章只是全改成了属于自己的CommonUserWidget&#xff…...

三级缓存【又称提前暴露(early exposure)】

三级缓存是Spring框架用于解决循环依赖问题的一种机制。它用于管理正在被创建的Bean实例&#xff0c;以确保它们在适当的时候被正确初始化。三级缓存分为三个阶段&#xff0c;分别是"未暴露"、"已暴露"和"已完成"&#xff0c;以下是它们的解释&a…...

【ARM Coresight 系列文章 3.5 - ARM Coresight -- JTAG-DP(JTAG Debug Port) 详细介绍】

请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 文章目录 概述1.1 DP elements1.1.1 外部连接到 JTAG-DP上的信号1.1.2 Debug TAP 状态机1.2 指令扫描链和指令1.3 DPv3 JTAG-DP 访问AP示意图概述 本节内容主要介绍 JTAG Debug Port 、Debug Test Access Port (DBGTAP), D…...

【笔记】回顾JavaWeb结合自身开发的项目——分层解耦与IOC、MySQL简单查询

分层解耦的三层架构 如下图所示是手术训练系统中的实现&#xff1a; 如果你需要从new EmpServiceA()变为new EmpServiceB()&#xff0c;那么必然需要修改Service和Controller层的代码&#xff0c;那么如果我们不new 这个对象呢&#xff1f;是不是就不需要依赖Controller层。 …...

Modelsim 使用教程(5)——Analyzing Waveforms

一、概述 Wave窗口允许我们以HDL波形和数据的形式查看仿真结果。Wave窗口被划分为多个窗格。通过单击并在任意两个窗格之间拖动该条&#xff0c;可以调整路径名窗格、值窗格和波形窗格的大小。 二、加载一个设计&#xff08;Loading a Design&#xff09; 1、打开modelsim 2、…...

String-固长字符串序列

在java中&#xff0c;String不是基础数据类型&#xff0c;也不是包装器类型&#xff0c;其实它是为了便捷操作字符、字节等而诞生的引用数据类型。更多内容详见公众hao&#xff1a;云水致诚 1、String是基础数据类型吗&#xff1f; String不是基础类型&#xff0c;存储在其中的…...

RABC权限模型与Spring Security

今天&#xff0c;我将带你进入一个充满策略和刺激的领域——权限之战。在这场战斗中&#xff0c;我们的主角是RABC权限模型&#xff08;Role-Based Access Control&#xff09;和Spring Security&#xff0c;他们将共同为我们打造一个安全稳定的世界。 权限模型&#xff1a;游戏…...

linux 编译lpthread

1&#xff1a;undefined reference to pthread_create gcc main.c -o test -lpthread [roothqgao ddserver]# gcc ddserver.c -o ddserver -lpthread [roothqgao ddserver]# ./ddserver Segmentation fault makefile 简单例子 all: httpd client LIBS -lpthread #-lsocket h…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例

目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码&#xff1a;冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...

aardio 自动识别验证码输入

技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”&#xff0c;于是尝试整合图像识别与网页自动化技术&#xff0c;完成了这套模拟登录流程。核心思路是&#xff1a;截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...

[拓扑优化] 1.概述

常见的拓扑优化方法有&#xff1a;均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有&#xff1a;有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...