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

顺序表-数据结构

一、结构定义

顺序表是通常是数组,要求数据连续存储。顺序表又分为定长顺序表和变长顺序表,本文实现后者。

1、头文件

#include <stdio.h>
#include <stdlib.h>

2、定长顺序表

#define MAX 100
定长顺序表结构
typedef struct SqList {int arr[MAX];int size;
}Sq;

3、变长顺序表

//变长顺序表 
typedef struct SqList {int* arr;int size;int capacity;
}Sq;

二、功能实现

1、初始化

//初始化
bool Sq_init(SqList* S) {//检查空指针if (S == NULL){printf("init false");exit(-1);}S->arr = (int*)malloc(sizeof(int) * 30);//检查malloc是否成功if (S->arr == NULL) {printf("malloc false");return false;}S->capacity = 30;S->size = 0;return true;
}

2、扩容

//检查数组、满则扩容
bool Sq_Check(SqList* S)
{if (S->size == S->capacity){int newcapacity = S->capacity + 30;int* arr_tmp = (int*)realloc(S->arr, newcapacity * sizeof(int));if (arr_tmp == NULL) {printf("realloc false");exit(-1);}S->arr = arr_tmp;S->capacity = newcapacity;}
}

3、插入

//头插
bool Sq_PushFront(SqList* S,int value)
{if (S == NULL)exit(-1);Sq_Check(S);for (int i = S->size; i > 0; i--){S->arr[i] = S->arr[i - 1];}S->arr[0] = value;S->size++;return true;
}
//尾插
bool Sq_PushBack(SqList* S, int value)
{if (S == NULL)exit(-1);Sq_Check(S);S->arr[S->size] = value;S->size++;return true;
}

4、删除

//头删
int Sq_PopFront(SqList* S)
{//头删就是把序号为0的元素删除//若需要删除序号为x的元素//只需要更改i的初始值和循环次数即可if (S == NULL)exit(-1);//让后一项覆盖前一项,重复size-1次int ret = S->arr[0];for (int i = 0; i < S->size - 1; i++){S->arr[i] = S->arr[i + 1];}S->size--;return ret;
}
//尾删
int Sq_PopBack(SqList* S)
{if (S == NULL)exit(-1);int ret = S->arr[S->size - 1];S->size--;return ret;
}

5、查询

//查
int Sq_Select(SqList* S, int x)
{if (S == NULL)exit(-1);if (x >= S->size)exit(-1);return S->arr[x];
}

6、主函数及打印


void Sq_Print(SqList* S)
{for (int i = 0; i < S->size; i++){printf("%d ", S->arr[i]);}printf("\n");
}
int main(){SqList* S = (SqList*)malloc(sizeof(SqList));Sq_init(S);Sq_PushBack(S, 1);Sq_PushBack(S, 2);Sq_PushBack(S, 3);Sq_PushFront(S, 4);Sq_Print(S);Sq_PopBack(S);Sq_PopFront(S);Sq_Print(S);printf("%d",Sq_Select(S, 1));return 0;
}

三、效果图

相关文章:

顺序表-数据结构

一、结构定义 顺序表是通常是数组&#xff0c;要求数据连续存储。顺序表又分为定长顺序表和变长顺序表&#xff0c;本文实现后者。 1、头文件 #include <stdio.h> #include <stdlib.h> 2、定长顺序表 #define MAX 100 定长顺序表结构 typedef struct SqList {…...

如何写出更优雅的并行程序?

如何写出更优雅的并行程序&#xff1f; 并行编程关于并行编程的一些理解 并行编程 并行编程是一种利用多个处理器或计算资源同时执行多个任务的编程方式&#xff0c;以提高计算效率和性能。允许程序员编写可以在多核处理器或多个计算机节点上同时执行的程序&#xff0c;以充分…...

C#中的Hangfire和Quartz.NET 任务调度的区别

Hangfire 和 Quartz.NET 是两种常见的 C# 任务调度库&#xff0c;它们有不同的特点和使用场景。以下是这两个库的详细对比&#xff0c;包括它们的主要功能、适用场景以及关键区别。 目录 Hangfire 主要功能 适用场景 示例代码 Quartz.NET 主要功能 适用场景 示例代码 …...

银行卡二三四要素验证-银行卡二三四要素验证接口-银行卡二三四要素

接口简介&#xff1a;全面覆盖&#xff0c;支持所有带银联标识的银行卡; 高准确性-验证结果实时返回&#xff0c;准确率达99%; 高稳定性-双通道自动切换&#xff0c;保证业务不间断; 专业服务-7*24小时服务&#xff0c;极速响应&#xff0c;为用户保驾护航; 接口地址&#xff1…...

C# 设计模式之命令模式

总目录 前言 命令模式在日常中&#xff0c;也是比较常见的&#xff0c;就比如&#xff1a;妈妈和爸爸说&#xff0c;你去让孩子把地扫一下&#xff1b;这就是是一个命令&#xff0c;命令中的 下达命令的是妈妈&#xff0c;传达命令的是爸爸&#xff0c;接受命令做事的是孩子&a…...

pod详解 list-watch机制 预选优选策略 如何指定节点调度pod

K8S是通过 list-watch 机制实现每个组件的协同工作 controller-manager、scheduler、kubelet 通过 list-watch 机制监听 apiserver 发出的事件&#xff0c;apiserver 也会监听 etcd 发出的事件 scheduler的调度策略&#xff1a; 预选策略&#xff08;Predicates&#xff09;…...

深入探索:【人工智能】、【机器学习】与【深度学习】的全景视觉之旅

目录 第一部分&#xff1a;人工智能、机器学习与深度学习概述 1.1 人工智能的概念与发展 代码示例&#xff1a;简单的AI决策系统 1.2 机器学习的定义与分类 代码示例&#xff1a;简单的线性回归模型 1.3 深度学习的基础与应用 代码示例&#xff1a;构建简单的神经网络 …...

使用js和css 实现div旋转围绕圆分布排列

记录&#xff0c;以防忘记 围绕圆 import React, { useEffect } from react; import ./index.scoped.scss;const Test () > {const arr Array.from({ length: 28 }, (_, index) > index 1);useEffect(() > {const dayTotal arr.length;// 动态设置每个点的旋转角…...

SQL Server中CPU使用率过高的排查

CPU使用率过高有许多可能原因&#xff0c;但以下原因最为常见&#xff1a; 1.由于以下情况&#xff0c;表或索引扫描导致的高逻辑读取&#xff1a; 过期统计信息 缺少索引 参数敏感计划 (PSP) 问题 设计不佳的查询 2.工作负荷增加 对于安装了sqlserver的服务器&#xff0c;可…...

AUTOSAR AP常用文档前缀

AUTOSAR AP常用文档前缀总结如下表&#xff1a; 缩写全称含义EXPExplanation文档类别&#xff0c;跟踪类别 讨论其他文件中已经显示的内容的说明材料MODModel文档类别&#xff0c;跟踪类别 元级别1(模型)上的建模内容(模型或从模型生成的内容)RSRequirement Specification文档…...

服务器迁移基于Tomcat部署的java应用,没有源码怎么办?

文章目录 反编译创建java工程编译新的数据库配置类DbUtilclass文件替换到Tomcat配置的应用路径 docBase背景:非国产化项目服务器审计不通过,需要迁移到外部公司。由于项目是第三方公司开发,丢失java项目源码。 部署环境:Tomcat7,JDK1.8 涉及JAVA项目的有两个服务,一个电台…...

kafka-go使用:以及kafka一些基本概念说明

关于kafka 作为开发人员kafka中最常关注的几个概念&#xff0c;是topic,partition和group这几个概念。topic是主题的意思&#xff0c;简单的说topic是数据主题&#xff0c;这样解释好像显得很苍白&#xff0c;只是做了个翻译。一图胜前言&#xff0c;我们还是通过图解来说明。…...

景联文科技:破解数据标注行业痛点,引领高质量AI数据服务

数据标注行业是人工智能和机器学习领域中一个非常重要的组成部分。随着AI技术的发展&#xff0c;对高质量标注数据的需求也在不断增长。 数据标注市场的痛点 1. 团队管理 在众包和转包模式下&#xff0c;管理大量的标注人员是一项挑战。 需要确保标注人员的专业性、稳定性和…...

C#获取Network的相关信息

1&#xff0c;获取网络的通断。 //方法1&#xff1a;无效果&#xff0c;并不能反映当前网络通断 bool availableSystem.Windows.Forms.SystemInformation.Network//方法2&#xff1a;通过VB获取网络状态&#xff0c;可反映当前网络通断 Microsoft.VisualBasic.Devices.Network…...

Jenkins 部署Vue项目指引: Vue项目本地跨域代理 、解决ERR_UNSAFE_PORT

文章目录 引言I Jenkins 部署Vue项目配置插件安装系统配置NodeJS安装目录和别名设置新建任务(通用类型)构建环境Build Steps(构建步骤)II nginx部署站点(端口和站点目录的映射)查找Nginx配置文件端口和站点目录的映射III Vue项目本地跨域代理,屏蔽掉后端服务API的网关IP…...

C语言电子画板

目录 开头程序程序的流程图程序的效果结尾 开头 大家好&#xff0c;我叫这是我58。今天&#xff0c;我们来看一下我用C语言编译的电子画板和与之相关的一些东西。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <Windows.h> int main() …...

Android Gradle开发与应用技术原理

Android Gradle开发与应用技术原理 Android Gradle开发与应用技术原理一、概述二、Gradle构建原理1. Gradle架构2. Gradle构建过程3. 构建脚本 三、Gradle插件机制四、在Android应用中实现Text-to-Speech&#xff08;TTS&#xff09;功能1. 配置Gradle依赖2. 实现TTS功能示例代…...

Midjourney入门-提示词基础撰写与公式

​ 前言 在前几篇教程里我们已经可以初步使用Midjourney进行出图了。 包括也了解了Midjourney的指令与参数。 但如果你想用Midjourney去生成各种各样高质量的图片&#xff0c; 并且生成的图片是你想要的画面内容&#xff0c;也就是更好控制生成图片的画面内容与风格&#xf…...

Apache Tomcat服务器版本号隐藏

渗透测试时发现有一台服务器的404报错页面中&#xff0c;有Apache Tomcat的版本号信息显示&#xff0c;发生了信息泄露&#xff0c;可能导致服务器被攻击。如下所示&#xff1a; 解决步骤如下&#xff1a; 1. 隐藏HTTP响应头中的Server信息 Tomcat默认会在HTTP响应头中包含S…...

【Qt】Qt编程注意事项

目录 Qr中的命名规范 Qt Creator中的快捷键 查询文档的方式 Qt窗口坐标体系 Qr中的命名规范 在学习编程语言阶段&#xff0c;给变量、函数、文件、类命名是非常有讲究的。 命名要有描述性&#xff0c;不要使用abc&#xff0c;xyz这种比较无规律的名字类描述。如果名字比较…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...