顺序表学习笔记(基础)
属于线性表旗下的一种,所以专门存储 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;
}
顺序表和数组的关系及区别
| 顺序表(存储结构) | 数组(数据类型) | |
|---|---|---|
| 区别 | 顺序表侧重表达了数据之间保持了 “一对一” 的逻辑关系 | 数组是顺序表在实际编程中的一种实现方式 |
| 相同 | 数据存储在一整块内存空间中,数据元素之间紧挨着存放 | |
相关文章:
顺序表学习笔记(基础)
属于线性表旗下的一种,所以专门存储 one-to-one 关系的数据。 顺序表提供的具体实现方案是:将数据全部存储到一整块内存空间中,数据元素之间按照次序挨个存放。(类似数组) 顺序表中除了存储数据本身的值外࿰…...
PyTorch入门学习(十九):完整的模型验证套路
目录 一、图像加载和数据转换 二、模型加载 三、前向推理 四、结果解释 一、图像加载和数据转换 首先,需要加载待验证的图像,并将其转换为模型期望的输入大小和数据类型。以下是加载图像并进行数据转换的示例: import torch import tor…...
YOLO目标检测数据集大全【含voc(xml)、coco(json)和yolo(txt)三种格式标签+划分脚本+训练教程】(持续更新建议收藏)
一、作者介绍:资深图像算法工程师,YOLO算法专业玩家;擅长目标检测、语义分割、OCR等。 二、数据集介绍: 真实场景的高质量图片数据,数据场景丰富,分享的绝大部分数据集已应用于各种实际落地项目。所有数据…...
PHP保存时自动删除末尾的空格,phpstorm自动删除空白字符串
最近有个活儿,修改一个财务软件。 修改后给客户验收的过程中,客户反应有一个txt表格导出功能不能用了。之前是好的。 这次是新增,老的这个功能碰都没碰过,怎么能有问题呢?我心里OS 下班后我立马用系统导出TXT&#…...
2022 icpc杭州站 C. No Bug No Game - 背包dp
题面 分析 能拿整个 p i p_i pi的就拿整个的,不能拿了可以拿一部分的,因此可以分成0和1两种情况,0表示拿整个的,1表示还可以拿部分的,两种情况放在一起做一遍01背包,找到最大价值。 代码 #include &l…...
Temp directory ‘C:\WINDOWS\TEMP‘ does not exist
问题描述 解决方法 管理员权限问题,进入temp文件夹更改访问权限即可。 点击 temp文件夹 属性 -> 安全 -> 高级 -> 更改主体Users权限 给读取和写入权限 参考博客 开发springboot项目时无法启动Temp directory ‘C: \WINDOWS\TEMP‘ does not exist...
【单片机基础小知识-如何通过指针来读写寄存器】
寄存器的本质就是内存,RAM,而指针是可以对内存进行操作的,因此可以通过指针来读写寄存器。 如何读取以下一片地址: 步骤1、首地址 结构体,它所占用的内存空间大小与它内部成员有关。 构造一个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索引事务存储引擎
索引:是一个排序的列表 列表中存储的是索引的值和包含这个值数据所在行的物理地址 索引的作用 利用索引数据库可以快速定位 大大加快查询速度表的数据很大 或查询需要关联多个表 使用索引也可以查询速度加快表与表之间的连接速度使用分组和排序时可以大大减少时间提…...
【服务器使用】vscode winscp进行服务器容器连接(含修改初始密码)
1:获取docker的登陆信息 例如节点(host)、端口(port)、密码(passwd)等信息,这个自己找组内的前辈获取即可 2:配置config文件 找到vscode里面ssh处的config文件 人工找…...
Go和JavaScript结合使用:抓取网页中的图像链接
前言 在当今数字化时代,数据是金钱的源泉,对于许多项目和应用程序来说,获取并利用互联网上的数据是至关重要的。其中之一的需求场景是从网页中抓取图片链接,这在各种项目中都有广泛应用,特别是在动漫类图片收集项目中…...
通信协议---串口、RS232、RS485
串口 起始位:低电平(0) 数据位:通常为8位 校验位:数据位校验位中为1的位是奇或偶 停止位:高电平(1) 5V TTL电平标准 2.4V~5V:逻辑1; 0~0.4V:逻辑0。 图中是对字符’c’进行数据传输,十进制99,…...
UE5 c++将自定义UserWdiget添加到对应菜单栏
前言: 为了实现与UserWidget一致的右键添加,便有了此章 注:这里使用的是UE5.3 目标内容: 这里可以参考UserWidget的源码,拷贝一份属于自己的就ok(本篇章只是全改成了属于自己的CommonUserWidgetÿ…...
三级缓存【又称提前暴露(early exposure)】
三级缓存是Spring框架用于解决循环依赖问题的一种机制。它用于管理正在被创建的Bean实例,以确保它们在适当的时候被正确初始化。三级缓存分为三个阶段,分别是"未暴露"、"已暴露"和"已完成",以下是它们的解释&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简单查询
分层解耦的三层架构 如下图所示是手术训练系统中的实现: 如果你需要从new EmpServiceA()变为new EmpServiceB(),那么必然需要修改Service和Controller层的代码,那么如果我们不new 这个对象呢?是不是就不需要依赖Controller层。 …...
Modelsim 使用教程(5)——Analyzing Waveforms
一、概述 Wave窗口允许我们以HDL波形和数据的形式查看仿真结果。Wave窗口被划分为多个窗格。通过单击并在任意两个窗格之间拖动该条,可以调整路径名窗格、值窗格和波形窗格的大小。 二、加载一个设计(Loading a Design) 1、打开modelsim 2、…...
String-固长字符串序列
在java中,String不是基础数据类型,也不是包装器类型,其实它是为了便捷操作字符、字节等而诞生的引用数据类型。更多内容详见公众hao:云水致诚 1、String是基础数据类型吗? String不是基础类型,存储在其中的…...
RABC权限模型与Spring Security
今天,我将带你进入一个充满策略和刺激的领域——权限之战。在这场战斗中,我们的主角是RABC权限模型(Role-Based Access Control)和Spring Security,他们将共同为我们打造一个安全稳定的世界。 权限模型:游戏…...
linux 编译lpthread
1: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…...
从零手写感知机到MindSpore实战:一份完整的鸢尾花分类作业避坑指南
从零手写感知机到MindSpore实战:一份完整的鸢尾花分类作业避坑指南 鸢尾花分类是机器学习入门的经典案例,但对于初学者来说,从理论推导到框架实战往往充满挑战。本文将带你完整走通这条学习路径:先手写感知机理解算法本质…...
AI智能体开发全解析:从需求到部署,打造下一代智能应用!
AI智能体(AI Agent)的开发流程已从传统的软件开发生命周期(SDLC)演进为智能体开发生命周期(ADLC, Agentic Development Lifecycle)。其核心逻辑不再是编写确定的逻辑代码,而是构建具备感知、规划…...
别再把FastAPI路由和挂载搞混了!一张图讲清`mount`与子应用的应用场景
FastAPI路由与挂载深度解析:如何为模块化开发选择最佳方案 在构建现代Web应用时,模块化设计已成为提升可维护性和团队协作效率的关键策略。FastAPI作为Python生态中最受欢迎的异步框架之一,提供了两种截然不同的模块化方案:APIRo…...
复古玩法:OpenClaw+Qwen3.5-9B模拟操作Windows 98怀旧游戏
复古玩法:OpenClawQwen3.5-9B模拟操作Windows 98怀旧游戏 1. 为什么选择Windows 98游戏作为测试场景 最近在整理旧硬盘时,偶然发现了一批Windows 98时代的经典游戏安装包。这些20年前的老游戏不仅界面风格复古,操作方式也与现代软件大相径庭…...
3分钟终极解决方案:快速解除Cursor试用限制的完整指南
3分钟终极解决方案:快速解除Cursor试用限制的完整指南 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro. We …...
BERT文本分割-中文-通用领域开发者指南:源码路径/usr/local/bin/webui.py解析
BERT文本分割-中文-通用领域开发者指南:源码路径/usr/local/bin/webui.py解析 1. 项目简介 随着在线教学、远程会议等应用的普及,口语化文档的数量正在快速增长。这些文档通常以会议记录、讲座内容、采访稿等形式存在。但通过自动语音识别系统生成的文…...
Z-Image-Turbo_Sugar脸部Lora应用探索:游戏NPC角色脸谱AI生成工作流
Z-Image-Turbo_Sugar脸部Lora应用探索:游戏NPC角色脸谱AI生成工作流 1. 什么是Z-Image-Turbo_Sugar脸部Lora Z-Image-Turbo_Sugar脸部Lora是一个专门用于生成特定风格脸部图像的AI模型。它基于Z-Image-Turbo模型,通过Lora技术进行了精细调优࿰…...
终极指南:SmartRefreshLayout如何优化游戏APP排行榜的流畅刷新体验
终极指南:SmartRefreshLayout如何优化游戏APP排行榜的流畅刷新体验 【免费下载链接】SmartRefreshLayout 🔥下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll,Android智能下拉刷新框架,支持越界回弹、越界拖动…...
睿尔曼超轻量仿人机械臂--控制器与末端接口深度解析
1. 睿尔曼机械臂接口设计理念解析 第一次拿到睿尔曼机械臂时,最让我惊讶的是它的极简设计——传统机械臂必备的控制柜、示教器和缠绕的线缆统统不见了,整个系统就只有一个机械臂本体。这种高度集成化的设计背后,其实隐藏着两个关键接口模块&a…...
LangChain4j的AiServices到底怎么用?一个注解让SpringBoot服务秒变AI智能体
LangChain4j的AiServices深度实践:用声明式编程重构SpringBoot智能服务 在Java生态中集成大语言模型(LLM)时,开发者常常面临一个架构难题:如何在保持代码整洁的同时,优雅地组织AI能力?LangChain…...
