学习笔记:顺序表和链表(一、顺序表)

首先来个导言:

1.数组的优势:下标的随机访问,物理空间连续。数组指针用[ ]或者 * , 结构体指针用 - >   

2.书写习惯 test.c写出主体框架 QelList.c写出结构体、头文件、函数声明  QelList.c写出函数的实现 

3.挪动:如果从前往后挪会覆盖数据,那么久从后往前挪

4.直接写控制台,容易出错,建议写成一个个test_SeqList_pushback()这种类型的函数进行调试。在测试函数中进行创建、初始化、操作、销毁

5.增删查改的时候,要想后从start开始还是从end开始

正式内容:

1.线性表

线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结

构,常见的线性表:顺序表、链表、栈、队列、字符串...

线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物

理上存储时,通常以数组和链式结构的形式存储

2. 顺序表
2.1 概念及结构
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组
上完成数据的增删查改。
顺序表一般可以分为:
1. 静态顺序表:使用定长数组存储元素。
如:
typedef int SLDatetype
#define N 10
Struct Seqlist
{
    SLDatetype arr[N];   
    int size;    //存储有效数据的个数
};
//劣势:空间固定(小了不够用,多了浪费)
2. 动态顺序表:使用动态开辟的数组存储。
如:
typedef int SLDatetype
#define N 10
Struct Seqlist
{
    SLDatetype *  arr;   
    int size;    //存储有效数据的个数
    int capacity   //容量
};
2.2 接口实现
静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多了浪
费,开少了不够用。所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小,所以下面我们实
现动态顺序表。
typedef int SLDataType ;
// 顺序表的动态存储
typedef struct SeqList
{
SLDataType * array ; // 指向动态开辟的数组
size_t size ; // 有效数据个数
size_t capicity ; // 容量空间的大小
} SeqList ;
// 基本增删查改接口
// 顺序表初始化
void SeqListInit ( SeqList * psl , size_t capacity );
// 检查空间,如果满了,进行增容
void CheckCapacity ( SeqList * psl );
// 顺序表尾插
void SeqListPushBack ( SeqList * psl , SLDataType x );
// 顺序表尾删
void SeqListPopBack ( SeqList * psl );
// 顺序表头插
void SeqListPushFront ( SeqList * psl , SLDataType x );
// 顺序表头删
void SeqListPopFront ( SeqList * psl );
// 顺序表查找
int SeqListFind ( SeqList * psl , SLDataType x );
// 顺序表在 pos 位置插入 x  //Insert 插入
void SeqListInsert ( SeqList * psl , size_t pos , SLDataType x );
// 顺序表删除 pos 位置的值    //        Erase  //擦除
void SeqListErase ( SeqList * psl , size_t pos );
// 顺序表销毁
void SeqListDestroy ( SeqList * psl );            //destroy
// 顺序表打印
void SeqListPrint ( SeqList * psl );
modify    修改
find    查找
//只要插入数据,就要关注容量  //check --  移动 --  push/insert
当需要往后挪动数据的时候,想好是从最后一个开始后移还是从第一个开始后移

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

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

相关文章

Oracle数据库日志文件

导读 本文讲解Oracle数据库的日志文件 Oracle数据库日志文件是数据库管理中至关重要的组成部分,它们记录了数据库系统中发生的各种事务和操作,以确保数据的一致性、完整性和可恢复性。在Oracle数据库中,主要有三种类型的日志文件:…

2024年AIGC发展现状

AIGC的发展现状呈现出一种蓬勃发展的态势。随着技术的不断进步和应用场景的不断拓展,AIGC正在逐渐成为引领新一轮科技革命和产业变革的重要力量。 在应用层创新方面,AIGC产业发展已经确定了明确的方向。AIGC应用正在率先在B端办公和生产力场景中落地&am…

APEX开发过程中需要注意的小细节3

【问题记录】在编辑数据信息时发现辩护的数据无法保存,提示 “ORA-01799: 列不能外部联接到子查询” 仅展示的数据来自主表,这部分都是关联子表重点内容,编辑时无法保存 于是想将扩展表作为主表,在主表进行修改试试 新的报错&a…

C#实现归并排序算法

C#实现归并排序算法 以下是 C# 中的归并排序算法实现示例: using System;class MergeSortAlgorithm {// 合并两个子数组static void Merge(int[] arr, int left, int mid, int right){// 计算左子数组和右子数组的长度int n1 mid - left 1;int n2 right - mid;/…

C语言从入门到精通 第十二章(程序的编译及链接)

写在前面: 本系列专栏主要介绍C语言的相关知识,思路以下面的参考链接教程为主,大部分笔记也出自该教程。除了参考下面的链接教程以外,笔者还参考了其它的一些C语言教材,笔者认为重要的部分大多都会用粗体标注&#xf…

MySQL表列数和行大小限制详解

MySQL表列数和行大小限制详解 MySQL在表的列数和行大小方面有一些限制,本文将对这些限制进行详细解释。 列数限制 MySQL对每个表的列数有硬限制为4096列,但对于给定的表,实际的最大列数可能会更少。确切的列限制取决于几个因素&#xff1a…

使用Python的Scrapeasy几行代码内快速抓取任何网站的信息

前言 在浏览网页时,经常会遇到喜欢的视频、音频和图片,希望将它们保存下来。通常的做法是使用浏览器的书签功能或者网站提供的收藏功能。但是,如果网站上的内容被删除,这些方式都会失效。比如在短视频网站中,如果我们…

读《文明之光》第1册总结

人类几千年的文明史和地球的历史相比,实在是太短暂了,大约相当于几分钟和一年的关系。人类已经走过的路,相比今后要走的漫漫长路,只能算是刚刚起步。如果跳出一个个具体事件,站在历史的高度去看,我们会发现…

支小蜜校园防欺凌系统听到声音之后会自动识别吗

在校园安全领域,特别是在预防和应对欺凌问题上,校园防欺凌系统作为新兴的技术应用,正在受到越来越多的关注和探索。那么当这样的系统听到声音之后,它是否能够自动识别并作出相应反应呢?本文将围绕这一问题展开探讨。 …

Python通过SFTP实现网络设备配置备份

一、背景 为了防止网络设备意外损坏,导致配置文件无法恢复,可以通过将网络设备的配置文件备份到本地电脑上。 一般情况下,设备支持通过FTP、TFTP、FTPS、SFTP和SCP备份配置文件。其中使用FTP和TFTP备份配置文件比较简单,但是存在…

K线实战分析系列之十八:十字线——判断行情顶部的有效信号

K线实战分析系列之十八:十字线——判断行情顶部的有效信号 一、十字线二、十字线总结三、三种特殊十字线四、长腿十字线五、墓碑十字线六、蜻蜓十字线七、特殊十字线总结 一、十字线 重要的反转信号 幅度较大的下跌,出现一根十字线,正好是在…

编译内核错误 multiple definition of `yylloc‘

编译内核错误 # make ARCHarm CROSS_COMPILEarm-mix410-linux- uImageHOSTLD scripts/dtc/dtc /usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss0x10): multiple definition of yylloc; scripts/dtc/dtc-lexer.lex.o:(.bss0x0): first defined here collect2: error: ld ret…

【Lazy ORM】 小工具 acw 本地客户端 你负责点击页面,他负责输出代码

介绍 wu-smart-acw-client 简称acw-client&#xff0c;是一个基于Lazy ORM定制的客户端代码生成小工具 Lazy ORM 小工具 acw 本地客户端 你负责点击页面&#xff0c;他负责输出代码安装 <dependency><groupId>top.wu2020</groupId><artifactId>wu-sma…

数据结构——lesson7二叉树 堆的介绍与实现

前言&#x1f49e;&#x1f49e; 啦啦啦~这里是土土数据结构学习笔记&#x1f973;&#x1f973; &#x1f4a5;个人主页&#xff1a;大耳朵土土垚的博客 &#x1f4a5; 所属专栏&#xff1a;数据结构学习笔记 &#x1f4a5;对于数据结构顺序表链表有疑问的都可以在上面数据结…

第四届信息通信与软件工程国际会议(ICICSE 2024)即将召开!

2024年第四届信息通信与软件工程国际会议&#xff08;ICICSE 2024&#xff09;将于2024年5月10-12日在中国北京举办。本次会议由北京工业大学、IEEE以及Comsoc 联合主办。随着当今社会信息化的高速发展&#xff0c;电子信息技术的应用更是随处可见。其中&#xff0c;信息通信与…

WebGL之让目标动起来

在此示例中&#xff0c;我们实际上将旋转正方形平面。 使正方形旋转 让我们开始旋转正方形。我们需要的第一件事是创建一个变量&#xff0c;用于跟踪正方形的当前旋转&#xff1a; var squareRotation 0.0;现在我们需要更新drawScene()函数以在绘制正方形时将当前旋转应用于…

备份 ChatGPT 的聊天纪录

备份 ChatGPT 的聊天纪录 ChatGPT 在前阵子发生了不少次对话纪录消失的情况&#xff0c;让许多用户觉得困扰不已&#xff0c;也担心自己想留存的聊天记录消失不见。 好消息是&#xff0c;OpenAI 在 2023 年 4 月 11 日推出了 ChatGPT 聊天记录备份功能&#xff0c;无论是免费…

QT绑定信号槽重载

qt5中信号和槽的绑定方式发生了变化不再使用宏SIGNAL、SLOT而是使用传递函数指针的形式&#xff0c;这时如果遇到重载函数就需要进行一下类型转换&#xff0c;有两种方式 connect(a, QOverload<type>::of(&A::fun), this, &B::fun); connect(a, static_cast&l…

Redis什么这么快和Redis单线程模型和多线程

概述 1、完全基于内存&#xff0c;绝大部分请求是纯粹的内存操作&#xff0c;非常快速。数据存在内存中&#xff0c;类似于HashMap&#xff0c;HashMap的优势就是查找和操作的时间复杂度都是O(1)&#xff1b; 2、数据结构简单&#xff0c;对数据操作也简单&#xff0c;Redis中…

二叉树入门

这篇博客通过手动创建的一个简单二叉树&#xff0c;实现二叉树遍历&#xff0c;返回节点&#xff0c;叶子个数&#xff0c;查找结点等相关操作。 1. 二叉树的概念 二叉树不为空时&#xff0c;由根节点&#xff0c;左/右子树组成&#xff0c;逻辑结构如下&#xff0c;当二叉树…