82.【C语言】数据结构之顺序表的初始化和销毁
目录
1.线性表
2.分类
1.静态顺序表:使用定长数组存储元素
代码示例(写入Seqlist.h中)
2.动态顺序表:使用与动态内存管理有关的函数
代码示例(写入Seqlist.h中)
补:数据管理的四个需求:增改删查
3.操作顺序表
1.初始化顺序表
1.不开辟空间
2.开辟空间
1.传值调用
2.传址调用
SeqList项目的函数的传址调用的过程
在软件开发中,存储列表常用顺序表或链表
1.线性表
定义:n个具有相同特性的数据元素的有限序列(相当于一条直线)(用数组存储),要求数据依次存储

2.分类
1.静态顺序表:使用定长数组存储元素
代码示例(写入Seqlist.h中)
typedef int SLDataType;//将int重定义为SLDataType
#define N 10
struct Seqlist
{SLDataType a[N];int size;
};
备注:SLDataType的全称 Sequence List Data Type,a[N]为int类型,含10个元素的空间
想修改a数组的空间大小,修改#define的那一行即可
缺点:空间少了不够用,空间多了浪费
2.动态顺序表:使用与动态内存管理有关的函数
代码示例(写入Seqlist.h中)
typedef int SLDataType;//将int重定义为SLDataType
struct Seqlist
{SLDataType* a;int size;int capacity;//空间的容量
};
补:数据管理的四个需求:增删查改
增:增加(插入数据); 删:删除数据; 查:搜索数据; 改:修改数据的内容
3.操作顺序表
1.初始化顺序表

1.不开辟空间
SeqList.h
#pragma once
#include <stdio.h>
#include <stdlib.h>typedef int SLDataType;//将int重定义为SLDataType
typedef struct Seqlist
{SLDataType* a;//动态顺序表int size;//有效数据的个数int capacity;//空间的容量
}SL;//SL 就是 struct Seqlist void SeqInit(SL s);//声明初始化顺序表的函数
void SeqDestory(SL s);//声明销毁顺序表的函数
将结构体写入头文件,这样多个源文件可以同时引用
main.c
#include "SeqList.h"
SL s;//全局变量//定义测试顺序表的函数
void TestSeqList1()
{SeqInit(s);
}int main()
{TestSeqList1();return 0;
}
注意:不能将SL s;写在TestSeqList1内,否则未初始化会报错

SeqList.c(将对操作顺序表的函数写入此文件)
#include "SeqList.h"
void SeqInit(SL s)
{s.a = NULL;s.size = 0;s.capacity = 0;
}
上述为s.a赋值为NULL

2.开辟空间
1.传值调用
在SeqList.h中添加
#define INIT_CAPACITY 4//初始容量为4
SeqList.c修改为
#include "SeqList.h"
void SeqInit(SL s)
{s.a = (SLDataType*)malloc(sizeof(SLDataType)*INIT_CAPACITY);if (s.a == NULL){perror("malloc");//错误返回,不用返回具体的数,因为SeqInit的返回类型为voidreturn;}s.size = 0;s.capacity = INIT_CAPACITY;
}
注意:
1.在68.【C语言】动态内存管理(重点)(1) 讲过,malloc函数可能开辟不成功,需要判断返回的指针是否为NULL
2.这里SeqInit(s);是传值调用,形参是实参的一份拷贝
2.传址调用
SeqList.h
#pragma once
#include <stdio.h>
#include <stdlib.h>typedef int SLDataType;//将int重定义为SLDataType
#define INIT_CAPACITY 4
typedef struct Seqlist
{SLDataType* a;//动态顺序表int size;//有效数据的个数int capacity;//空间的容量
}SL;void SLInit(SL* ps);//声明初始化顺序表的函数
void SLDestory(SL* ps);//声明销毁顺序表的函数
main.c
#include "SeqList.h"
//定义测试顺序表的函数
void TestSeqList1()
{SL s;SLInit(&s);SLDestory(&s);
}int main()
{TestSeqList1();return 0;
}
SeqList.c(将对操作顺序表的函数写入此文件)
#include "SeqList.h"
void SLInit(SL* ps)
{ps->a = (SLDataType*)malloc(sizeof(SLDataType)*INIT_CAPACITY);if (ps->a == NULL){perror("malloc");return ;//错误返回}ps->size = 0; ps->capacity = 0;
}
SeqList项目的函数的传址调用的过程
main()-->TestSeqList1()-->SLInit(&s)-->函数逐个返回
2.销毁顺序表
SeqList.c写入
void SLDestory(SL *ps)
{free(ps->a);ps->a = NULL;ps->size = ps->capacity = 0;
}
注:在定义结构体时, a为指针,先对指针释放,再置为NULL;size和capacity为int类型,置为0即可
SLDataType* a;
int size;
int capacity;
相关文章:
82.【C语言】数据结构之顺序表的初始化和销毁
目录 1.线性表 2.分类 1.静态顺序表:使用定长数组存储元素 代码示例(写入Seqlist.h中) 2.动态顺序表:使用与动态内存管理有关的函数 代码示例(写入Seqlist.h中) 补:数据管理的四个需求:增改删查 3.操作顺序表 1.初始化顺序表 1.不开辟空间 2.开辟空间 1…...
java-推荐一个控制台输出颜色ANSI字符的类
java-推荐一个控制台输出颜色ANSI字符的类 背景代码调用输出 背景 这个类是来自hive的一段代码,大家可以参考一下,这个类名是ColorBuffer 代码 /** Licensed to the Apache Software Foundation (ASF) under one* or more contributor license agreem…...
关于定义结构体别名时 是否加*
在C语言中,使用typedef来定义结构体类型及其指针的别名时,Node和LinkList的声明方式有所不同,这是因为你对它们的目的和用途有不同的设定。 首先,看一下你的代码: typedef struct { int data; int lenght; // 注意&am…...
成语积累学习
识文断字:有一点文化知识 雨后春笋:春雨过后快速生长的竹笋;比喻大量涌现的新生事物 味同嚼蜡:如同咀嚼白蜡一样,毫无味道。形容文章或言辞枯燥乏味。 差强人意:大体上让人满意 八面玲珑:处…...
基于Java的茶叶商城设计与实现(源码+定制+开发)茶叶电商系统开发、茶叶电商平台开发、茶叶在线销售平台设计与开发
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
桥接、NAT和仅主机三种网络模式对虚拟机IP地址分配的影响
在虚拟机中,桥接、NAT和仅主机(Host-Only)这三种网络模式会给虚拟机带来不同的IP地址分配方式及相应的网络连接特性,从而产生不同的影响,具体如下: 桥接模式 IP地址分配特点:在桥接模式下&…...
音乐播放器-0.专栏介绍
1.简介 本专栏使用Qt QWidget作为显示界面,你将会学习到以下内容: 1.大量ui美化的实例。 2.各种复杂ui布局。 3.常见显示效果实现。 4.大量QSS实例。 5.Qt音频播放,音乐歌词文件加载,展示。 6.播放器界面换肤。 相信学习了本专栏…...
单月变现3W!AI助力沙雕图文爆红小绿书,12篇阅读量破10万+!
最近有没有小伙伴注意到,在各大社交平台上,那些温馨治愈、搞笑沙雕的图文内容,能吸引大量的目光和流量,不久前,我也曾分享过这类内容,比如让人眼前一亮的人间清醒老奶奶,她的图文就属于这类流行…...
C语言复习第4章 数组
目录 一、一维数组的创建和初始化1.1数组的创建1.2 变长数组1.3 数组的初始化1.4 全局数组默认初始化为01.5 区分两种字符数组1.6 用sizeof计算数组元素个数1.7 如何访问数组元素1.8 一维数组在内存中的存储(连续存储)1.9 访问数组元素的另一种方式:指针变量1.10 数组越界是运行…...
大数据研究实训室建设方案
一、概述 本方案旨在提出一套全面的大数据研究实训室建设策略,旨在为学生打造一个集理论学习与实践操作于一体的高端教育环境。实训室将专注于培养学生在大数据处理、分析及应用领域的专业技能,通过先进的设施配置、科学的课程体系和实用的实训模式&…...
Unity3D 观察者模式
Unity3D 泛型事件系统 观察者模式 观察者模式是一种行为设计模式,通过订阅机制,可以让对象触发事件时,通知多个其他对象。 在游戏逻辑中,UI 界面通常会监听一些事件,当数据层发生变化时,通过触发事件&am…...
vue从0开始的项目搭建(含环境配置)
一、环境准备 下载node.js 检查node.js版本 替换npm下载源 1.下载node.js: Node.js — 在任何地方运行 JavaScript (nodejs.org) 2.查看版本: windowsr输入cmd进入输入node -v命令查看版本号是否出现确认是否安装 2.替换npm下载源: npm config set registry https://reg…...
力扣61~65题
题61(中等): 分析: python代码: # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def rot…...
API接口开发流程与指南
API(应用程序编程接口)是现代软件开发中不可或缺的一部分,它允许不同的软件应用之间进行交互和数据交换。无论是调用第三方服务、集成内部系统还是开发微服务架构,API都扮演着关键角色。本文将为你提供一个API接口入门的详解&…...
如何在Android中进行日志打印和调试?
在Android开发中,日志打印和调试是开发者定位问题、优化性能和提升应用质量的重要手段。以下将详细阐述如何在Android中进行日志打印和调试,包括日志工具的使用、调试技巧以及实践中的最佳实践。 一、日志工具的使用 1. Log类 Android中的日志工具类是…...
Linux基本使用和程序部署
文章目录 一. Linux背景Linux发行版 二. Linux环境搭建Linux常见命令lspwdcdtouchcatmkdirrmcpmvtailvimgreppsnetstat管道 三. 搭建java部署环境安装jdk安装mysql部署Web项目到Linux 一. Linux背景 1969−1970年,⻉尔实验室的DennisRitchie和KenTompson开发了Unix操作系统. 他…...
照片编辑成动态视频用什么软件好
在数字时代,让照片动起来确实已成为一种流行的潮流和趋势。如今,市面上涌现出众多软件,它们不仅配备了丰富多样的动态效果和特效,还支持用户进行个性化的编辑和创作。无论你是希望将家庭合影转化为充满温情的动画,还是…...
JavaWeb合集-SpringBoot项目配套知识
四、SpringBoot项目配套知识 1、Springboot项目的创建 2、HTTP 概念: Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 2.1 request 请求协议 浏览器向服务器发送请求的规则(get、post等)。 2.1.1 请…...
Electron入门笔记
Electron入门笔记 ElectronElectron 是什么Electron流程模型创建第一个Electron项目配置自动重启主进程和渲染进程通信打包应用 Electron Electron 是什么 跨平台的桌面应用开发框架使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium和 Node.js Electro…...
python 不相交集简介(并查集算法)【Introduction to Disjoint Set (Union-Find Algorithm)】
什么是不相交集数据结构? 如果两个集合没有任何共同元素,则它们被称为不相交集,集合的交集为空集。 存储不重叠或不相交元素子集的数据结构称为不相交集合数据结构。不相交集合数据结构支持以下操作: 1、将新集合添加到不相交集合…...
Win11Debloat:如何让Windows 11重获新生?一个开源工具的全方位解决方案
Win11Debloat:如何让Windows 11重获新生?一个开源工具的全方位解决方案 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other …...
如何让旧款Mac重获新生:OpenCore Legacy Patcher的系统延续方案
如何让旧款Mac重获新生:OpenCore Legacy Patcher的系统延续方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当你面对一台性能尚可但被苹果官方…...
向华为学习——解读华为战略执行全解码从规划到行动的DSTE与BLM模型集成应用方案【附全文阅读】
华为通过DSTE流程与BLM模型集成,实现战略从规划到执行的全流程管理。DSTE构建战略执行时间轴,BLM模型提供战略制定到执行框架,两者协同将长期规划拆解为年度计划,并通过绩效与资源保障闭环落地[4]。 关联阅读索引: 收藏不迷路——耗时三天完成整理 华为IPD流程体系战略解码…...
如何突破AI编程工具的设备限制:go-cursor-help开源工具深度解析
如何突破AI编程工具的设备限制:go-cursor-help开源工具深度解析 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial reques…...
HTTPie 完全指南:比 curl 更人性化的 HTTP 调试工具
HTTPie 完全指南:比 curl 更人性化的 HTTP 调试工具如果你厌倦了 curl 的冗长语法,HTTPie 是一个值得尝试的替代方案。一、HTTPie 是什么 HTTPie(发音:aitch-tee-tee-pie)是一个命令行 HTTP 客户端,目标是让…...
Graphormer效果展示:同一分子不同SMILES写法下的预测一致性验证
Graphormer效果展示:同一分子不同SMILES写法下的预测一致性验证 1. 模型概述 Graphormer是一种基于纯Transformer架构的图神经网络,专门为分子图(原子-键结构)的全局结构建模与属性预测而设计。该模型在OGB(Open Graph Benchmark)和PCQM4M等分子基准测…...
如何快速生成自己的数字人?亲测指南
数字人已成为短视频营销、跨境电商等领域的新工具,如何快速生成自己的数字人?本文结合亲测经验,分享实用方法。 一、数字人生成的核心步骤(3步搞定) 生成数字人无需复杂技术,只需三步即可完成。首先&#x…...
Linux操作系统-系统安装与三种网络模式
本文将指导您在VMware Workstation 16 Pro环境下安装CentOS 7系统,详细介绍从创建虚拟机到完成操作系统安装的完整步骤。一、创建虚拟机1.点击“文件”菜单,选择“创建虚拟机”,然后点击“自定义”开始创建虚拟机。2.点击"浏览"按钮…...
BetterGI:重新定义《原神》游戏体验的开源智能辅助系统
BetterGI:重新定义《原神》游戏体验的开源智能辅助系统 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 - …...
2026春招留学生必看:AI热潮下如何逆袭上岸大厂?高薪岗位申请指南
最近后台被问爆了——“安妮,今年春招到底什么情况?”“留学生回国还有优势吗?”“AI这么火,我们怎么上车?” 我花了三天时间,把字节、腾讯、百度、蚂蚁、美团这波春招的底裤都扒了一遍,结合和2…...
