C语言进阶|顺序表

news/2024/4/30 3:43:40/文章来源:https://blog.csdn.net/Dumpling527/article/details/137567463

✈顺序表的概念及结构

线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使
用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串..
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,
线性表在物理上存储时,通常以数组和链式结构的形式存储。
案例:蔬菜分为绿叶类、瓜类、菌菇类。线性表指的是具有部分相同特性的一类数据结构的集合
如何理解逻辑结构和物理结构?

✈顺序表分类

🚀顺序表和数组的区别

顺序表的底层结构是数组,对数组的封装,实现了常用的增删改查等接口

🚀顺序表分类

🛸静态顺序表

概念:使用定长数组存储元素

🛸动态顺序表 

✈动态顺序表的实现 

typedef int SLTYPE;typedef struct
{SLTYPE* sqlist;int size;//有效数据个数int capacity;//空间容量
}SL;
//变量的初始化
void SLInit(SL* sl);//变量的销毁
void SLDestroy(SL* sl);//打印顺序表
void SLPrint(SL* sl);//插入数据
//1.头插
void SLPushHead(SL* sl, SLTYPE data);
//2.尾插
void SLPushBack(SL* sl, SLTYPE data);
//3.中间插
void SLInsert(SL* sl, SLTYPE data, int pos);//删除数据
//1.头删
void SLPopHead(SL* sl);
//2.尾删
void SLPopBack(SL* sl);
//中间删
void SLErase(SL* sl,int pos);
//查找数据
int SLFind(SL* sl, SLTYPE data);

 🚀变量的初始化

//变量的初始化
void SLInit(SL* sl)
{sl->size = 0;sl->capacity = 0;sl->sqlist = NULL;
}

🚀变量的销毁

//变量的销毁
void SLDestroy(SL* sl)
{free(sl->sqlist);sl->sqlist = NULL;sl->size = sl->sqlist = 0;
}

打印顺序表

//打印顺序表
void SLPrint(SL* sl)
{for (int i = 0; i < sl->size; i++){printf("%d ", *(sl->sqlist+i));}printf("\n");
}

插入数据

//插入数据
//1.头插
void SLPushHead(SL* sl,SLTYPE data)
{//先判断是否要扩容if (sl->size == sl->capacity){int newcapacity = sl->capacity == 0 ? 4 : 2 * sl->capacity;SLTYPE* tmp = (SLTYPE*)realloc(sl->sqlist, newcapacity * sizeof(SLTYPE));if (tmp == NULL){perror("realloc");exit(1);}sl->sqlist = tmp;}sl->sqlist[sl->size++] = data;
}
//2.尾插
void SLPushBack(SL* sl, SLTYPE data)
{if (sl->size == sl->capacity){int newcapacity = sl->capacity == 0 ? 4 : 2 * sl->capacity;SLTYPE* tmp = (SLTYPE*)realloc(sl->sqlist, newcapacity * sizeof(SLTYPE));if (tmp == NULL){perror("realloc");exit(1);}sl->sqlist = tmp;}for (int i = sl->size; i > 0 ; i--){*(sl->sqlist + i) = *(sl->sqlist + i - 1);}sl->sqlist[0] = data;sl->size++;
}
//中间插
void SLInsert(SL* sl, SLTYPE data, int pos)
{if (sl->size == sl->capacity){int newcapacity = sl->capacity == 0 ? 4 : 2 * sl->capacity;SLTYPE* tmp = (SLTYPE*)realloc(sl->sqlist, newcapacity * sizeof(SLTYPE));if (tmp == NULL){perror("realloc");exit(1);}sl->sqlist = tmp;}for (int i = sl->size; i > pos; i--){*(sl->sqlist + i) = *(sl->sqlist + i - 1);}sl->sqlist[pos] = data;sl->size++;
}

删除数据

//删除数据
//1.头删
void SLPopHead(SL* sl)
{sl->size--;
}
//2.尾删
void SLPopBack(SL* sl)
{for (int i = 0; i < sl->size-1; i++){sl->sqlist[i] = sl->sqlist[i + 1];}sl->size--;
}
//中间删
void SLErase(SL* sl,int pos)
{for (int i = pos ; i < sl->size-1; i++){sl->sqlist[i] = sl->sqlist[i + 1];}sl->size--;
}

查找数据

//查找数据
int SLFind(SL* sl, SLTYPE data)
{for (int i = 0; i < sl->size; i++){if (data == sl->sqlist[i]){return i;}}
}

 

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

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

相关文章

大话设计模式——23.备忘录模式(Memento Pattern)

简介 又称快照模式&#xff0c;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并且该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态 UML图 应用场景 允许用户取消不确定或者错误的操作&#xff0c;能够恢复到原先的状态游戏存档、…

深度学习架构(CNN、RNN、GAN、Transformers、编码器-解码器架构)的友好介绍。

一、说明 本博客旨在对涉及卷积神经网络 &#xff08;CNN&#xff09;、递归神经网络 &#xff08;RNN&#xff09;、生成对抗网络 &#xff08;GAN&#xff09;、转换器和编码器-解码器架构的深度学习架构进行友好介绍。让我们开始吧&#xff01;&#xff01; 二、卷积神经网络…

【动手学深度学习】15_汉诺塔问题

注&#xff1a; 本系列仅为个人学习笔记&#xff0c;学习内容为《算法小讲堂》&#xff08;视频传送门&#xff09;&#xff0c;通俗易懂适合编程入门小白&#xff0c;需要具备python语言基础&#xff0c;本人小白&#xff0c;如内容有误感谢您的批评指正 汉诺塔&#xff08;To…

c/c++ |游戏后端开发之skynet

作者眼中的skynet 有一点要说明的是&#xff0c;云风至始也没有公开说skynet专门为游戏开发&#xff0c;换句话&#xff0c;skynet 引擎也可以用于web 开发 贴贴我的笔记 skynet 核心解决什么问题 愿景&#xff1a;游戏服务器能够充分利用多核优势&#xff0c;将不同的业务放在…

【随笔】Git 高级篇 -- 本地栈式提交 rebase | cherry-pick(十七)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

QT Creator概览

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;QT❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、Qt Creator 概览 ①&#xff1a;菜单栏 ②&#xff1a;模式选择 ③&#xff1a;构建套件选择器…

在图片上画出mask和pred

画出论文中《Variance-aware attention U-Net for multi-organ segmentation》的图1&#xff0c;也就是在原图上画出mask和pred的位置。 新建一个文件夹 然后运行代码&#xff1a; import cv2 import os from os.path import splitext####第一次&#xff1a;把GT&#xff08…

天书奇谈_源码_搭建架设_3D最新天启版_自带假人

本教程仅限学习使用&#xff0c;禁止商用&#xff0c;一切后果与本人无关&#xff0c;此声明具有法律效应&#xff01;&#xff01;&#xff01;&#xff01; 一. 效果演示 天书奇谈_源码_搭建架设 环境&#xff1a; centos7.6 &#xff0c; 放开所有端口 源码获取 https://…

Unity Pro 2019 for Mac:专业级游戏引擎,助力创意无限延伸!

Unity Pro 2019是一款功能强大的游戏开发引擎&#xff0c;其特点主要体现在以下几个方面&#xff1a; 强大的渲染技术&#xff1a;Unity Pro 2019采用了新的渲染技术&#xff0c;包括脚本化渲染流水线&#xff0c;能够轻松自定义渲染管线&#xff0c;通过C#代码和材料材质&…

Rust面试宝典第1题:爬楼梯

题目 小乐爬楼梯&#xff0c;一次只能上1级或者2级台阶。楼梯一共有n级台阶&#xff0c;请问总共有多少种方法可以爬上楼&#xff1f; 解析 这道题虽然是一道编程题&#xff0c;但实际上更是一道数学题&#xff0c;着重考察应聘者的逻辑思维能力和分析解决问题的能力。 当楼梯只…

华为2024年校招实习硬件-结构工程师机试题(四套)

华为2024年校招&实习硬件-结构工程师机试题&#xff08;四套&#xff09; &#xff08;共四套&#xff09;获取&#xff08;WX: didadidadidida313&#xff0c;加我备注&#xff1a;CSDN 华为硬件结构题目&#xff0c;谢绝白嫖哈&#xff09; 结构设计工程师&#xff0c;结…

HTTP与HTTPS:深度解析两种网络协议的工作原理、安全机制、性能影响与现代Web应用中的重要角色

HTTP (HyperText Transfer Protocol) 和 HTTPS (Hypertext Transfer Protocol Secure) 是互联网通信中不可或缺的两种协议&#xff0c;它们共同支撑了全球范围内的Web内容传输与交互。本文将深度解析HTTP与HTTPS的工作原理、安全机制、性能影响&#xff0c;并探讨它们在现代Web…

泰迪智能科技高职人工智能专业人才培养方案

人工智能行业近年来得到了快速发展&#xff0c;全球科技公司都在竞相投入人工智能的研发&#xff0c;从硅谷到北京&#xff0c;都在人工智能上取得了显著的进步。人工智能已经从学术研究转变为影响制造业、医疗保健、交通运输和零售等多个行业的关键因素。我国政策的积极推动下…

CentOS 7与MySQL 5.7.25主从复制实践

本文主要记录mysql主从复制的详细步骤&#xff0c;如果你还没来得及安装MySQL请参考CentOS 7实战&#xff1a;轻松实现MySQL 5.7.25的tar包离线安装 ProcessOn源文件地址 主从复制应用场景&#xff1a; 从服务器作为主服务器的实时备份主从服务器实现读写分离&#xff08;主…

南京航空航天大学-考研科目-513测试技术综合 高分整理内容资料-01-单片机原理及应用分层教程-单片机有关常识部分

系列文章目录 高分整理内容资料-01-单片机原理及应用分层教程-单片机有关常识部分 文章目录 系列文章目录前言总结 前言 单片机的基础内容繁杂&#xff0c;有很多同学基础不是很好&#xff0c;对一些细节也没有很好的把握。非常推荐大家去学习一下b站上的哈工大 单片机原理及…

Java快速入门系列-9(Spring框架与Spring Boot —— 深度探索及实践指南)

第九章:Spring框架与Spring Boot —— 深度探索及实践指南 9.1 Spring框架概述9.2 Spring IoC容器9.3 Spring AOP9.4 Spring MVC9.5 Spring Data JPA/Hibernate9.6 Spring Boot快速入门与核心特性9.7 Spring Boot的自动配置与启动流程详解9.8 创建RESTful服务与数据库交互实践…

RTSP/Onvif视频安防监控平台EasyNVR调用接口返回匿名用户名和密码的原因排查

视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入&#xff0c;并能对接入的视频流进行处理与多端分发&#xff0c;包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。平台拓展性强、支持二次开发与集成&#xff0c;可应用在景区、校园、水利、社区、工地等场…

03-JAVA设计模式-组合模式

组合模式 什么是组合模式 组合模式&#xff08;Composite Pattern&#xff09;允许你将对象组合成树形结构以表示“部分-整体”的层次结构&#xff0c;使得客户端以统一的方式处理单个对象和对象的组合。组合模式让你可以将对象组合成树形结构&#xff0c;并且能像单独对象一…

使用阿里云试用Elasticsearch学习:4. 聚合——2

近似聚合 如果所有的数据都在一台机器上&#xff0c;那么生活会容易许多。 CS201 课上教的经典算法就足够应付这些问题。如果所有的数据都在一台机器上&#xff0c;那么也就不需要像 Elasticsearch 这样的分布式软件了。不过一旦我们开始分布式存储数据&#xff0c;就需要小心…

无线网络2.4和5G的区别

无线网络2.4和5的区别 无线网络2.4GHz和5GHz的主要区别在于频率、覆盖范围、传输速度、干扰能力和穿透性。以下是详细介绍&#xff1a;12 频率不同。2.4GHz的频率较低&#xff0c;而5GHz的频率较高。频率越低&#xff0c;信号在传播过程中的损失越小&#xff0c;因此覆盖范围…