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

数据结构实战之线性表(一)

一.线性表的定义和特点

  1. 线性表的定义

  • 线性表是一种数据结构,它包含了一系列具有相同特性的数据元素,数据元素之间存在着顺序关系。例如,26个英文字母的字符表 ( (A, B, C, ....., Z) ) 就是一个线性表,其中每个字母就是一个数据元素。
  • 在线性表中,每个数据元素可以包含若干个数据项。例如,学生基本信息表中的每个学生可以视为一个数据元素,而这些元素包括学号、姓名、性别、籍贯、专业等数据项。
  • 2.线性表的特性

  • 在线性表中,虽然每个数据元素可能不同,但是它们都属于同一数据对象,具有相同的特性,且相邻的数据元素之间具有一定的顺序关系。
  • 3.线性表的长度与空表

  • 线性表的长度由元素的个数 n 决定(n ≥ 0),如果 n = 0 ,则称该线性表为“空表”。
  • 4.线性表(或线性结构)的特征

  • 存在唯一的一个数据元素被称为“第一个”。
  • 存在唯一的一个数据元素被称为“最后一个”。
  • 除第一个元素外,结构中的每个数据元素都有且只有一个前驱。
  • 除最后一个元素外,结构中的每个数据元素都有且只有一个后继。

学习更多嵌入式电子知识,C语言编程技术,欢迎抖音扫码关注

二.线性表之顺序表实现

1.项目结构以及初始代码

初始代码

main.c

#include <stdio.h>int main(int argc, char** argv)
{return 0;
}

SeqList.h

#ifndef __SEQLIST_H__
#define __SEQLIST_H__#include <stdio.h>#define SEQLIST_INIT_SIZE 8 // 顺序表初始大小typedef int ElemType;typedef struct SeqList
{ElemType* base;// 指向顺序表空间int capacity;// 顺序表容量int size;// 顺序表长度(元素个数)
}SeqList;#endif // !__SEQLIST_H__

SeqList.c

#include "SeqList.h"

2.顺序表初始化

SeqList.h

#ifndef __SEQLIST_H__
#define __SEQLIST_H__#include <stdio.h>
#include <malloc.h>
#include <assert.h>#define SEQLIST_INIT_SIZE 8 // 顺序表初始大小typedef int ElemType;typedef struct SeqList
{ElemType* base;// 指向顺序表空间int capacity;// 顺序表容量int size;// 顺序表长度(元素个数)
}SeqList;void InitSeqList(SeqList* list);#endif // !__SEQLIST_H__

main.c

#include <stdio.h>
#include "SeqList.h"int main(int argc, char** argv)
{SeqList mylist;InitSeqList(&mylist);return 0;
}

SeqList.c

#include "SeqList.h"void InitSeqList(SeqList* list)
{list->base = (ElemType*)malloc(sizeof(ElemType) * SEQLIST_INIT_SIZE);assert(list->base != NULL);list->capacity = SEQLIST_INIT_SIZE;list->size = 0;
}

3.顺序表操作代码框架

main.c

#include <stdio.h>
#include "SeqList.h"int main(int argc, char** argv)
{SeqList mylist;InitSeqList(&mylist);// 顺序表操作的选择int select = 1;while (select){printf("*********************************************\n");printf("* [1]  push_back         [2]  push_front    *\n");printf("* [3]  show_list         [4]  pop_back      *\n");printf("* [5]  pop_front         [6]  insert_pos    *\n");printf("* [7]  find              [8]  length        *\n");printf("* [9]  delete_pos        [10]  delete_val    *\n");printf("* [11] sort              [12] reverse       *\n");printf("* [13] clear             [14] destroy       *\n");printf("* [0]  quit_system                          *\n");printf("*********************************************\n");printf("请选择:>");scanf("%d", &select);if (select == 0){break;}switch (select){case 1:{break;}case 2:{break;}case 11:{break;}default:{printf("输入的选择错误,请重新输入!\n");break;}}}return 0;
}

注意:在visual studio2022中,使用scanf()函数获取输入,然后运行项目会报错:

解决方式:

重新运行项目,就不会报错了。

如果你喜欢这篇文章,别忘了收藏点赞关注,支持我们为您带来更多精彩内容!❤️🎉

动动手指,做起来吧! 👨‍💻👩‍💻,

后面我们还将一起讨论学习:序表尾部插入数据并显示顺序表头部插入数据顺序表尾部删除数据顺序表头部删除数据顺序表指定位置插入数据顺序表中查找指定的数据是否存在顺序表的长度顺序表按位置删除数据顺序表按值删除数据。。。。。。等等!

相关文章:

数据结构实战之线性表(一)

一.线性表的定义和特点 线性表的定义 线性表是一种数据结构&#xff0c;它包含了一系列具有相同特性的数据元素&#xff0c;数据元素之间存在着顺序关系。例如&#xff0c;26个英文字母的字符表 ( (A, B, C, ....., Z) ) 就是一个线性表&#xff0c;其中每个字母就是一个数据…...

Python学习之旅:进阶阶段(七)数据结构-计数器(collections.Counter)

在 Python 编程的进阶学习中,数据处理是一项重要的任务。collections.Counter作为 Python 标准库collections模块中的一员,为我们提供了一种高效且便捷的方式来统计数据出现的次数。接下来,就让我们一起深入了解这个强大的计数器。 一、什么是计数器 collections.Counter本…...

Spring Boot项目如何使用MyBatis实现分页查询及其相关原理

写在前面&#xff1a;大家好&#xff01;我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正&#xff0c;感谢大家的不吝赐教。我的唯一博客更新地址是&#xff1a;https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油&#xff0c;冲鸭&#x…...

【项目初始化】

项目初始化 使用脚手架创建项目Vite创建项目推荐拓展 使用脚手架创建项目 Vite Vite 是一个现代的前端构建工具&#xff0c;它提供了极速的更新和开发体验&#xff0c;支持多种前端框架&#xff0c;如 Vue、React 等创建项目 pnpm create vuelatest推荐拓展...

LeetCode热题100(八)—— 438.找到字符串中所有字母异位词

LeetCode热题100&#xff08;八&#xff09;—— 438.找到字符串中所有字母异位词 题目描述代码实现思路解析 你好&#xff0c;我是杨十一&#xff0c;一名热爱健身的程序员在Coding的征程中&#xff0c;不断探索与成长LeetCode热题100——刷题记录&#xff08;不定期更新&…...

26.Word:创新产品展示说明会【9】

目录 NO1.2.3​ NO4.5.6.7 NO1.2.3 另存为/F12&#xff1a;考生文件夹点亮显示和隐藏标记选中→插入→表格→文字转化成表格→✔制表符→确定布局→自动调整→设计→随便一种保存至“表格”部件库&#xff1a;选中表格→插入→文档部件→使用“表格”部件库&#xff1a;插入→…...

python 之 zip 和 * 解包操作

文章目录 1. zip 函数语法&#xff1a;示例&#xff1a;特点&#xff1a;应用场景&#xff1a; 2. * 操作符语法&#xff1a;示例&#xff1a;应用场景&#xff1a; 3. zip 和 * 的结合使用示例&#xff1a;转置二维列表 4. zip 和 * 的其他用法示例 1&#xff1a;合并多个列表…...

反向代理模块jmh

1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff0c;将从服务器上得到的结果返回给客户端&#xff0c;此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说&#xff0c;反向代理就相当…...

AI应用部署——streamlit

如何把项目部署到一个具有公网ip地址的服务器上&#xff0c;让他人看到&#xff1f; 可以利用 streamlit 的社区云免费部署 1、生成requirements.txt文件 终端输入pip freeze > requirements.txt即可 requirements.txt里既包括自己安装过的库&#xff0c;也包括这些库的…...

文明的基因:在传承中破茧重生

敦煌莫高窟的壁画历经千年风雨&#xff0c;至今仍在向世界讲述着东方美学的密码。那些斑驳的壁画上&#xff0c;既有北魏时期的天竺梵音&#xff0c;也留存着盛唐气象的长安余韵。文明的基因从未停止生长&#xff0c;就像莫高窟的壁画师们在临摹前朝壁画时&#xff0c;总会在衣…...

全国31省空间权重矩阵(地理相邻空间、公路铁路地理距离空间、经济空间)权重矩阵数据-社科数据

中国31个省份空间权重矩阵-社科数据https://download.csdn.net/download/paofuluolijiang/90028597 https://download.csdn.net/download/paofuluolijiang/90028597 空间权重矩阵是反映个体在空间中依赖关系的矩阵&#xff0c;本数据计算全国31个省三种标准化处理的空间权重矩…...

MySQL数据类型转换应注意什么?

文章目录 1. **隐式转换**2. **显式转换**3. **数据截断**4. **字符集与排序规则**5. **日期和时间转换**6. **数值转换**7. **NULL 处理**8. **性能影响**9. **错误处理**10. **函数选择**示例总结 在 MySQL 中进行数据类型转换时&#xff0c;需要注意以下几个关键点&#xff…...

前端开发之jsencrypt加密解密的使用方法和使用示例

目录 RSA密钥生成选项简介 jsencrypt 使用教程 一、安装 jsencrypt 二、使用 jsencrypt 进行加密和解密 1. 创建密钥对 2. 加密数据 3. 解密数据 三、实际应用示例 加密数据并存储到 localStorage 中&#xff1a; 从 localStorage 中读取加密数据并解密&#xff1a; …...

ESP32和STM32在处理中断方面的区别

为了通俗地讲解ESP32和STM32在处理中断方面的区别&#xff0c;我们可以把它们想象成两个不同的“智能管家”系统&#xff0c;各自负责管理一个家庭&#xff08;即嵌入式项目&#xff09;的各种任务。我们将重点放在如何处理突发事件&#xff08;即中断&#xff09;上。 ESP32 …...

98.1 AI量化开发:长文本AI金融智能体(Qwen-Long)对金融研报大批量处理与智能分析的实战应用

目录 0. 承前1. 简介1.1 通义千问(Qwen-Long)的长文本处理能力 2. 基础功能实现2.1 文件上传2.2 单文件分析2.3 多文件分析 3. 汇总代码&运行3.1 封装的工具函数3.2 主要功能特点3.3 使用示例3.4 首次运行3.5 运行结果展示 4. 注意事项4.1 文件要求4.2 错误处理机制4.3 最佳…...

PPT演示设置:插入音频同步切换播放时长计算

PPT中插入音频&同步切换&放时长计算 一、 插入音频及音频设置二、设置页面切换和音频同步三、播放时长计算 一、 插入音频及音频设置 1.插入音频&#xff1a;点击菜单栏插入-音频-选择PC上的音频&#xff08;已存在的音频&#xff09;或者录制音频&#xff08;现场录制…...

链表的简单介绍

申明&#xff1a; 我们的链表可以写在类中或者接口中&#xff08;接口中更好&#xff09;&#xff0c;这里我们是写在类当中。 1.节点的构造是由当前数据和指向下一个结点的地址组成&#xff0c;那么我们在当前这个链表的类中需要实现一个节点那么此时就需要用到内部类(当一个…...

Cocoa和Cocoa Touch是什么语言写成的?什么是Cocoa?编程语言中什么是框架?为什么苹果公司Cocoa类库有不少NS前缀?Swift编程语言?

Cocoa和Cocoa Touch是什么语言写成的? 二者主要都是用Objective-C语言编写而成的。 什么是Cocoa? Cocoa是苹果操作系统macOS和iOS上的应用程序开发框架集合&#xff0c;核心语言是Objective-C编程语言&#xff0c;在移动平台被称为Cocoa Touch&#xff0c;Cocoa包含多个子框架…...

AI-System 学习

《AI系统原理与架构》ZOMI https://github.com/chenzomi12/AISystem CPU、GPU、NPU 芯片基础 华为 Ascend 产品 NVLink的发展 & 结构 NVLink 拓扑、DGX 硬件渲染图...

基于聚类与相关性分析对马来西亚房价数据进行分析

碎碎念&#xff1a;由于最近太忙了&#xff0c;更新的比较慢&#xff0c;提前祝大家新春快乐&#xff0c;万事如意&#xff01;本数据集的下载地址&#xff0c;读者可以自行下载。 1.项目背景 本项目旨在对马来西亚房地产市场进行初步的数据分析&#xff0c;探索各州的房产市…...

ARM嵌入式学习--第十一天(中断处理 , ADC)

--中断的概念 中断是指计算机运行过程中&#xff0c;出现某些意外情况需主机干预时&#xff0c;机器能自动停止正在运行的程序并转入处理新情况的程序&#xff0c;处理完毕后又返回被暂停的程序继续运行 --CPU处理事情的方式 -轮询方式 不断查询是否有事情需要处理&#xff0c…...

消息队列篇--通信协议篇--网络通信模型(OSI7层参考模型,TCP/IP分层模型)

一、OSI参考模型&#xff08;Open Systems Interconnection Model&#xff09; OSI参考模型是一个用于描述和标准化网络通信功能的七层框架。它由国际标准化组织&#xff08;ISO&#xff09;提出&#xff0c;旨在为不同的网络设备和协议提供一个通用的语言和结构&#xff0c;以…...

“新月之智”智能战术头盔系统(CITHS)

新月人物传记&#xff1a;人物传记之新月篇-CSDN博客 相关文章链接&#xff08;更新&#xff09;&#xff1a; 星际战争模拟系统&#xff1a;新月的编程之道-CSDN博客 新月智能护甲系统CMIA--未来战场的守护者-CSDN博客 目录 一、引言 二、智能头盔控制系统概述 三、系统架…...

Go Fx 框架使用指南:深入理解 Provide 和 Invoke 的区别

1. 什么是 Fx 框架&#xff1f; Fx 是一个基于 Go 语言的依赖注入框架&#xff0c;专注于简化应用程序的生命周期管理和依赖的构建。在复杂的应用程序中&#xff0c;Fx 通过模块化的设计方式将组件连接起来&#xff0c;使开发者能够更高效地管理依赖关系。 Fx 的核心理念是&a…...

实验七 JSP内置对象II

实验七 JSP内置对象II 目的&#xff1a; 1、掌握JSP内置对象的使用。 2、理解JSP的作用域 3、掌握session&#xff0c;application对象的使用 实验要求&#xff1a; 1、完成实验题目 2、要求提交实验报告&#xff0c;将代码和实验结果页面截图放入报告中 实验过程&#xff1a…...

OpenCV:Harris、Shi-Tomasi角点检测

简述 在计算机视觉和图像处理领域&#xff0c;角点是一种重要的特征点&#xff0c;通常是图像中梯度变化剧烈的区域&#xff0c;例如建筑物的拐角、棋盘的交点等。角点检测广泛应用于目标跟踪、运动检测、拼接全景图 等任务。 本文将介绍 Harris 角点检测 和 Shi-Tomasi 角点…...

RK3568 opencv播放视频

文章目录 一、opencv相关视频播放类1. cv::VideoCapture 类主要构造方法&#xff1a;主要方法&#xff1a; 2. 视频播放基本流程代码示例&#xff1a; 3. 获取和设置视频属性4. 结合 FFmpeg 使用5. OpenCV 视频播放的局限性6. 结合 Qt 实现更高级的视频播放总结 二、QT中的代码…...

白话DeepSeek-R1论文(一)|AI的顿悟时刻:DeepSeek-R1-Zero 纯强化学习解锁推理新境界

最近有不少朋友来询问Deepseek的技术核心&#xff0c;今天开始陆续针对DeepSeek-R1论文中的核心内容进行解读&#xff0c;并且用大家都能听懂的方式来解读。 AI的顿悟时刻&#xff1a;DeepSeek-R1-Zero 纯强化学习解锁推理新境界 你有没有想过&#xff0c;人工智能是如何学会…...

青少年编程与数学 02-008 Pyhon语言编程基础 10课题、列表与循环语句

青少年编程与数学 02-008 Pyhon语言编程基础 10课题、列表与循环语句 一、列表二、定义与使用定义列表访问列表元素访问列表的切片修改列表元素列表的其他操作 三、运算1. 列表连接&#xff08;Concatenation&#xff09;2. 列表复制&#xff08;Copying&#xff09;3. 列表重复…...

caddy2配置http_basic用于验证用户名密码才允许访问页面

参考&#xff1a; basicauth (Caddyfile指令) — Caddy v2中文文档 1&#xff0c;查看caddy是否已经包含了Basic Auth插件 命令&#xff1a;caddy list-modules | grep http_basic 如果显示&#xff1a; http.authentication.providers.http_basic 则代表包含 Basic Auth 模…...