C语言_存储结构实现_线性表

#include <stdio.h>
#include <stdlib.h>#define MAX_SIZE 100 // 定义线性表的最大长度typedef struct {int data[MAX_SIZE]; // 用数组存储数据元素int length; // 线性表的当前长度
} SqList;// 函数声明
void initList(SqList *list); // 初始化线性表
int insertList(SqList *list, int index, int value); // 在指定位置插入元素
int deleteList(SqList *list, int index); // 删除指定位置的元素
int getList(SqList *list, int index, int *value); // 获取指定位置的元素
void printList(SqList *list); // 打印线性表int main() {SqList list;initList(&list);// 插入元素insertList(&list, 0, 1);insertList(&list, 1, 2);insertList(&list, 2, 3);// 打印线性表printList(&list);// 删除元素deleteList(&list, 1);// 再次打印线性表printList(&list);return 0;
}// 函数定义
void initList(SqList *list) {list->length = 0;
}int insertList(SqList *list, int index, int value) {if (list->length >= MAX_SIZE || index < 0 || index > list->length) {return 0; // 插入失败}for (int i = list->length; i > index; i--) {list->data[i] = list->data[i - 1];}list->data[index] = value;list->length++;return 1; // 插入成功
}int deleteList(SqList *list, int index) {if (index < 0 || index >= list->length) {return 0; // 删除失败}for (int i = index; i < list->length - 1; i++) {list->data[i] = list->data[i + 1];}list->length--;return 1; // 删除成功
}int getList(SqList *list, int index, int *value) {if (index < 0 || index >= list->length) {return 0; // 获取失败}*value = list->data[index];return 1; // 获取成功
}void printList(SqList *list) {for (int i = 0; i < list->length; i++) {printf("%d ", list->data[i]);}printf("\n");
}

 解释

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

#define MAX_SIZE 100 // 定义线性表的最大长度

typedef struct {
    int data[MAX_SIZE]; // 用数组存储数据元素
    int length; // 线性表的当前长度
} SqList;

// 函数声明
void initList(SqList *list); // 初始化线性表
int insertList(SqList *list, int index, int value); // 在指定位置插入元素
int deleteList(SqList *list, int index); // 删除指定位置的元素
int getList(SqList *list, int index, int *value); // 获取指定位置的元素
void printList(SqList *list); // 打印线性表

int main() {
    SqList list;
    initList(&list);

    // 插入元素
    insertList(&list, 0, 1);
    insertList(&list, 1, 2);
    insertList(&list, 2, 3);

    // 打印线性表
    printList(&list);

    // 删除元素
    deleteList(&list, 1);

    // 再次打印线性表
    printList(&list);

    return 0;
}

// 函数定义

//初始化线性表 
void initList(SqList *list) {
    list->length = 0;
}

//在指定位置插入元素    执行遇到第一个return时将会退出函数 
int insertList(SqList *list, int index, int value) {
    if (list->length >= MAX_SIZE || index < 0 || index > list->length) {
        return 0; // 插入失败
    }
    for (int i = list->length; i > index; i--) {
        list->data[i] = list->data[i - 1];
        //数据不按照顺序存储将被丢弃多余的 
    }
    list->data[index] = value;
    list->length++;
    return 1; // 插入成功
}

// 删除指定位置的元素
int deleteList(SqList *list, int index) {
    if (index < 0 || index >= list->length) {
        return 0; // 删除失败
    }
    for (int i = index; i < list->length - 1; i++) {
        list->data[i] = list->data[i + 1];
    }
    list->length--;
    return 1; // 删除成功
}

// 获取指定位置的元素
int getList(SqList *list, int index, int *value) {
    if (index < 0 || index >= list->length) {
        return 0; // 获取失败
    }
    *value = list->data[index];
    return 1; // 获取成功
}

//打印线性表中所有元素 
void printList(SqList *list) {
    for (int i = 0; i < list->length; i++) {
        printf("%d ", list->data[i]);
    }
    printf("\n");
}
 

注意  ->  表示指向结构体

但在C99  和  C11  中才能用

可用 *  或  .    代替

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

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

相关文章

Linux下修改系统的运行级别

借助命令ll /etc/system/system/default.target可以查看当前的系统运行的级别&#xff1a;以下图为例运行级别就是3 但如果系统运行的级别默认为图形时&#xff0c;要将图形级别改为文本级别&#xff0c;可以按照下边两种方法运行&#xff1a; 1、重新设置链接文件 这个方法需…

wy的leetcode刷题记录_Day74

wy的leetcode刷题记录_Day74 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2024-1-22 前言 目录 wy的leetcode刷题记录_Day74声明前言670. 最大交换题目介绍思路代码收获 670. 最大交换 今天的每日一题是&#xff1a;670. 最大交换 …

03-常用编程概念

上一篇&#xff1a;02-编程猜谜游戏 本章介绍几乎所有编程语言中都会出现的概念&#xff0c;以及它们在 Rust 中的工作原理。许多编程语言的核心都有许多共同点。本章介绍的概念都不是 Rust 独有的&#xff0c;但我们会在 Rust 的上下文中讨论这些概念&#xff0c;并解释使用这…

Pymol-电子密度图展示方法-PDB数据库已发表结构和自己晶体解析得到的结构密度图

简单来说&#xff0c;想要用PyMol展示电子密度图可以归为以下两种&#xff1a; 一是展示PDB数据库中已发表数据的结构和Map的方式 以6sps.pdb为例&#xff0c;在pymol中导入该数据密度图时&#xff0c;可以无需下载对应的密度文件&#xff0c;直接用fetch即可&#xff1a; Py…

二维码地址门牌管理系统:预约安全、智能生活

文章目录 前言一、访客预约功能二、安全性保障三、智慧小区生活 前言 二维码地址门牌管理系统的出现不仅提升了小区的安全性&#xff0c;还为访客提供了更便捷的预约服务&#xff0c;让亲朋好友轻松进入小区。 一、访客预约功能 该系统提供了访客预约功能&#xff0c;业主可为…

关于Unity插件TriLib使用的一点儿心得

最近做一个项目的时候&#xff0c;由于要求动态加载fbx或者glb等格式文件&#xff0c;而我们自己开发加载插件难度又有点大&#xff0c;所以最后使用了TriLib这个插件&#xff0c;现在说一点使用心得。 由于文件加载之后要对加载的内容进行复制&#xff0c;比如加载一个柱子&am…

【Docker】部署和运行青龙面板:一个支持python3、javaScript、shell、typescript 的定时任务管理面板

引言 青龙面板是一个支持python3、javaScript、shell、typescript 的定时任务管理面板。 步骤 拉取镜像 从 Docker Hub 上拉取最新的 “qinglong” 镜像。 docker pull whyour/qinglong:latest启动容器 使用刚刚拉取的镜像来启动一个新的 Docker 容器。 docker run -dit \-v…

pikachu验证码绕过第三关攻略

打开pikachu靶场第三关&#xff1a; 挂上代理&#xff0c;随便输入账户密码&#xff1a; 返回bp。进行放包发现显示token错误。 每一次登录的返回包会带有token相关数据用于下一次的登录认证&#xff1a; 进行替换token值&#xff1a; 替换完成开始进行检点的爆破&#xff1a;…

准备的一些爬虫面试题

最近准备试试外面的市场&#xff0c;找找看外面的岗位&#xff0c;给自己找点后路&#xff0c;防止到时候被裁被动。 我将面试题分为基于scrapy框架与普通爬虫【requests/aiohttp等开发的爬虫】 普通爬虫面试题 列举反爬虫机制 (1) UA 检测&#xff0c;请求头合法性 (2) Rob…

Python使用HTTP代理进行API请求的优化

在Python中&#xff0c;HTTP代理是一种常用的技术&#xff0c;用于控制和修改HTTP请求和响应。通过使用HTTP代理&#xff0c;我们可以更好地控制网络请求的行为&#xff0c;提高安全性、隐私性和效率。下面我们将详细介绍如何在Python中使用HTTP代理进行API请求的优化。 一、减…

10分钟快速上手LLM大模型Python前端开发(三)之显示模块(二)

【计划昵称全网统一&#xff0c;代码随想随记&#xff0c;知乎无法立即修改&#xff0c;&#xff0c;】 微信公众号&#xff1a;leetcode_algos_life&#xff0c;代码随想随记 小红书&#xff1a;412408155 CSDN&#xff1a;https://blog.csdn.net/woai8339?typeblog &#xf…

反序列化字符串逃逸(上篇)

首先&#xff0c;必须先明白&#xff0c;这个点并不难&#xff0c;我给大家梳理一遍就会明白。 反序列化字符串逃逸就是序列化过程中逃逸出来字符&#xff0c;是不是很简单&#xff0c;哈哈哈&#xff01; 好了&#xff0c;不闹了&#xff0c;其实&#xff1a; 这里你们只要懂…

Windows系统如何修改Nginx配置实现远程访问多个本地站点

文章目录 1. 下载windows版Nginx2. 配置Nginx3. 测试局域网访问4. cpolar内网穿透5. 测试公网访问6. 配置固定二级子域名7. 测试访问公网固定二级子域名 1. 下载windows版Nginx 进入官方网站(http://nginx.org/en/download.html)下载windows版的nginx 下载好后解压进入nginx目…

P4学习(六)实验三:a Control Plane using P4Runtime

目录 一. 实验目的二.阅读MyController.py文件1.导入P4Runtime的库2.main部分1. P4InfoHelper 实例化2. 创建交换机连接3. 设置主控制器4. 安装 P4 程序5. 写入隧道规则6. 读取表项和计数器&#xff08;注释掉的部分&#xff09;7. 定时打印隧道计数器8. 异常处理9. 关闭交换机…

hbase预分区

一、原理 HBase在创建表时,默认会自动创建一个Region分区。在导入数据时,所有客户端都向这个Region写数据,直到这个Region足够大才进行切分。这样在大量数据并行写入时,容易引起单点负载过高,从而影响入库性能。一个好的方法是在建立HBase表时预先分配数个Region,这样写…

2024年华为OD机试真题-CPU算力分配-Python-OD统一考试(C卷)

题目描述: 现有两组服务器A和B,每组有多个算力不同的CPU,其中A[i]是A组第i个CPU的运算能力,B[i]是B组第i个CPU的运算能力。一组服务器的总算力是各CPU的算力之和。为了让两组服务器的算力相等,允许从每组各选出一个CPU进行一次交换,求两组服务器中,用于交换的CPU的算力,…

TensorRT部署--Linux(Ubuntu)环境配置

系列文章目录 TensorRT环境配置–Linux(Ubuntu) 文章目录 系列文章目录前言一、环境配置二、CUDA下载安装三、cuDNN下载安装四、TensorRT下载安装五、模型创建总结 前言 TensorRT部署-Windows环境配置: https://blog.csdn.net/m0_70420861/article/details/135658922?csdn_s…

还在为git分支回滚发愁吗??一文了解git分支回滚操作全流程!!

在Git中进行分支回滚通常意味着将分支上的头指针&#xff08;HEAD&#xff09;移动到旧的提交上。这可以通过几种不同的命令完成&#xff0c;包括git reset和git revert。下面将解释这两种方法。 远程分支的回滚包含以下几步&#xff1a; 第一步&#xff1a;本地回滚 首先&am…

深入了解WPF控件:常用属性与用法(六)

掌握WPF控件&#xff1a;熟练常用属性&#xff08;六&#xff09; ListView 用于展示数据项集合的列表控件。它提供了丰富的功能和灵活的定制性&#xff0c;可以轻松地展示和编辑大量的数据。 常用属性描述ItemsSource用于设置ListView的数据源。可以是一个集合、数组或列表…

开发安全之:System Information Leak: External

Overview 在调用 error_reporting() 过程中&#xff0c;程序可能会显示系统数据或调试信息。由 error_reporting() 揭示的信息有助于攻击者制定攻击计划。 Details 当系统数据或调试信息通过套接字或网络连接使程序流向远程机器时&#xff0c;就会发生外部信息泄露。 示例 1…