嵌入式系统学习Day19(数据结构)

数据结构的概念:
相互之间存在一种或多种特定关系的数据元素的集合。

数据之间关系:

逻辑关系:集合,线性(1对1,中间位置的值有且仅有一个前驱,一个后继),树(1对多),图(多对多)

物理关系:

顺序结构(类似于数组):存储空间连续,有序

链表:存储空间不连续


算法:
对特定问题求解步骤的描述。(类似函数)

算法的特性:输入输出特性(输入可省,输出必须有,数值的改变就可以称为输出),可读性(便于阅读), 可行性(可以用代码执行出来),有穷性(是有限的),确定性(同一个输入会是同一个输出)

衡量算法好坏的方法。
时间复杂度,时间的度量(事前分析法) ,大O 记法。

O(1)<O(lgn)<O(N)<O(nLgN)<O(N^2)<O(N^3)

顺序表
存储空间是连续

 特征:  支持随机访问   head+5 head[0] O(1)
插入,删除, 整体移动。   O(N)
不具有动态存储功能。

关于顺序表的操作

#include <stdio.h>
#include <stdlib.h>
#include "seqlist.h"
#include <string.h>
int main(int argc, char** argv)
{FILE* fp = fopen("/home/linux/dict.txt","r");if(NULL == fp){perror("fopen");return 1;}SeqList* sl = CreateSeqList(20000);if(NULL == sl){fprintf(stderr,"CreateSeqList error\n");return 1;}while(1){DATATYPE data;char * word=NULL;char* mean=NULL;char linebuf[1024]={0};if(NULL==fgets(linebuf,sizeof(linebuf),fp)){break;}word = strtok(linebuf," ");mean = strtok(NULL,"\r");strcpy(data.word,word);strcpy(data.mean,mean);// strcpy(data->word,word);// strcpy(data->mean,mean);InsertTailSeqList(sl, &data);}while(1){char want_word[50]={0};printf("input word:");fgets(want_word,sizeof(want_word),stdin);// book\nwant_word[strlen(want_word)-1]='\0';if(0==strcmp(want_word,"#quit")){break;}int ret = FindSeqList(sl, want_word);if(-1 == ret){printf("cant find %s\n",want_word);}else  {ShowSeqListOne(sl, ret);}}return 0;fclose(fp);DestroySeqList(sl);
}

#include "hwdict.h"
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
SeqList *CreateSeqList(int len)
{SeqList *sl = malloc(sizeof(SeqList));if (NULL == sl){perror("CreateSeqList malloc error\n");return NULL;}sl->head = malloc(sizeof(DATAWORD) * len);if (NULL == sl->head){perror("CreateSeqList malloc2 error\n");return NULL;}sl->tlen = len;sl->clen = 0;return sl;
}void ReadInfo(SeqList *list, char *argv)
{int fd = open(argv, O_RDONLY);if(-1 ==fd){perror("open");exit(1);}char buf[50];char info_buf[500];int i;int flag =1;int ret =0;//while (list->clen < list->tlen)//每一行读取while(flag){i = 0;while (1){ret = read(fd, &buf[i], 1);if(ret<=0){flag =0;break;}if (buf[i] == ' '){buf[i] = '\0';strcpy(list->head[list->clen].name, buf);break;}i++;}i = 0;while (1){ret= read(fd, &info_buf[i], 1);if(ret<=0){flag =0;break;}if (info_buf[i] == '\n'){info_buf[i] = '\0';strcpy(list->head[list->clen].info, info_buf);break;}i++;}list->clen++;if(list->clen == list->tlen){flag=0;break;}}close(fd);
}int GetSizeSeqList(SeqList *list)
{return list->clen;
}int FindSeqList(SeqList *list, char *name)
{int len = GetSizeSeqList(list);for (int i = 0; i < len; i++){if (0 == strcmp(list->head[i].name, name)){return i;}}return -1;
}
#ifndef _SEQLIST_H_
#define _SEQLIST_H_typedef struct word
{char name[50];char info[500];
} DATAWORD;typedef struct list
{DATAWORD *head;int tlen;int clen;
} SeqList;//创建一个顺序表
SeqList *CreateSeqList(int len);void ReadInfo(SeqList *list, char *argv);int GetSizeSeqList(SeqList *list);int FindSeqList(SeqList *list, char *name);
#endif

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

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

相关文章

Pandas中数据清理、连接数据以及合并多个数据集的方法

一、简介1.数据清理的重要性&#xff1a;在进行数据分析前&#xff0c;需进行数据清理&#xff0c;使每个观测值成一行、每个变量成一列、每种观测单元构成一张表格。2.数据组合的必要性&#xff1a;数据整理好后&#xff0c;可能需要将多张表格组合才能进行某些分析&#xff0…

JavaSSM框架从入门到精通!第二天(MyBatis(一))!

一、 Mybatis 框架1. Mybatis 框架简介Mybatis 是 apache 的一个开源项目&#xff0c;名叫 iBatis &#xff0c;2010 年这个项目由 apache 迁移到了 google&#xff0c;并命名为 Mybatis&#xff0c;2013 年迁移到了 GitHub&#xff0c;可以在 GitHub 下载源码。2. Mybatis 的下…

Linux下Mysql命令,创建mysql,删除mysql

在 Linux 系统下&#xff0c;您可以通过命令行来创建和删除 MySQL 数据库。以下是详细的操作步骤&#xff0c;包括创建和删除数据库、用户&#xff0c;以及常见的相关管理命令。1. 登录 MySQL在执行任何 MySQL 操作之前&#xff0c;需要先登录 MySQL。1.1 使用 root 用户登录 M…

假设检验的原理

假设检验是统计学中用于判断样本数据是否支持某个特定假设的方法。其核心思想是通过样本数据对总体参数或分布提出假设&#xff0c;并利用统计量来判断这些假设的合理性。假设检验的基本步骤如下&#xff1a;1. 假设&#xff08;Hypothesis&#xff09;在统计学中&#xff0c;假…

信号、内存共享等实现

信号&#xff08;signal&#xff09;#include <signal.h> #include <stdio.h> #include <unistd.h>void handler(int sig) {printf("收到信号: %d\n", sig); }int main() {signal(SIGUSR1, handler); // 注册用户自定义信号printf("进程 PI…

《从日常到前沿:AI 在教育、医疗、制造业的真实落地案例》文章提纲

引言&#xff1a;AI 落地的多元图景​简述 AI 从实验室走向实际应用的发展趋势​说明选择教育、医疗、制造业的原因 —— 覆盖民生与基础产业&#xff0c;落地场景具有代表性​AI 在教育领域的落地案例​个性化学习&#xff1a;如某在线教育平台利用 AI 分析学生学习数据&#…

决策树(1)

一、树模型与决策树基础决策树概念&#xff1a;从根节点开始一步步走到叶子节点得出决策&#xff0c;所有数据最终都会落到叶子节点&#xff0c;既可用于分类&#xff0c;也可用于回归。树的组成根节点&#xff1a;第一个选择点。非叶子节点与分支&#xff1a;中间决策过程。叶…

电视系统:开启视听新时代

在当今数字化浪潮席卷的时代&#xff0c;电视领域正经历着一场深刻的变革&#xff0c;而电视系统无疑是这场变革中的耀眼明星。简单来讲&#xff0c;电视系统就是互联网协议电视&#xff0c;它宛如一座桥梁&#xff0c;巧妙地利用宽带有线电视网&#xff0c;将多媒体、互联网、…

字节开源了一款具备长期记忆能力的多模态智能体:M3-Agent

猫头虎AI分享&#xff5c;字节开源了一款具备长期记忆能力的多模态智能体&#xff1a;M3-Agent 近年来&#xff0c;多模态大模型的发展迅猛&#xff0c;但如何赋予智能体类似人类的长期记忆能力&#xff0c;一直是研究中的核心挑战。字节跳动开源的 M3-Agent&#xff0c;正是面…

第十六届蓝桥杯青少组C++省赛[2025.8.10]第二部分编程题(6、魔术扑克牌排列)

参考程序&#xff1a;#include<bits/stdc.h> using namespace std; long long dp[105]; long long c(int n) {dp[0] 1;for(int i1; i< n; i){for(int j0; j<i; j){dp[i] dp[j] * dp[i -1-j];}}return dp[n]; } int main() {int n;cin >> n;cout <<c(n…

【实时Linux实战系列】实时平台下的图像识别技术

在当今数字化时代&#xff0c;图像识别技术已经广泛应用于各个领域&#xff0c;如自动驾驶、安防监控、智能医疗等。它通过计算机对图像进行分析和处理&#xff0c;从而实现对物体、场景或人的识别。实时Linux作为一种高效的实时操作系统&#xff0c;为图像识别技术提供了强大的…

IPD流程执行检查表

IPD流程执行检查表 稽查

Jmeter的安装与使用教程

基于jdk1.8版本的Jmeter的下载与安装和使用教程。 一.安装jmeter 官网下载就行下载压缩包解压就行 Jmeter下载官网&#xff1a;http://jmeter.apache.org/download_jmeter.cgi找到安装包的下载位置&#xff0c;解压进入文件夹的bin文件夹下jmeter.bat。二.配置环境变量 1、“此…

docker 数据卷、自定义镜像操作演示分享(第二期)

数据卷1.1、背景前面有个docker go web demo应用示例&#xff0c;每次为了部署go_web_demo工程&#xff0c; 需要将使用到的cp的命令将宿主主机内的go_web_demo目录下的代码文件&#xff08;一般是编译后的二进制执行文件&#xff09;复制到容器内部。 数据卷&#xff1a;将宿主…

Pandas 入门到实践:核心数据结构与基础操作全解析(Day1 学习笔记)

目录 一、Pandas 概述 1. 什么是 Pandas 二、核心数据结构 1. Series 索引 显示索引 隐式索引 创建方式 属性与方法 数据访问 索引访问 切片访问 布尔索引 2. DataFrame 创建方式 属性与数据访问 数据修改 三、索引操作 1. 索引类型 2. 核心索引方法 3. 切…

hadoop技术栈(九)Hbase替代方案

一、 核心替代方向 ‌云原生托管NoSQL服务&#xff1a;‌ ‌Google Cloud Bigtable&#xff1a;‌ 这是HBase在云端的“官方”替代品&#xff0c;兼容HBase API&#xff0c;底层存储和架构高度优化&#xff0c;提供高吞吐、低延迟、无缝扩展、完全托管的服务。‌如果追求兼容性…

深度解析 DDoS 攻击:运作机制与防御体系构建​

在网络安全领域&#xff0c;DDoS&#xff08;分布式拒绝服务&#xff09;攻击始终是企业与机构的 “心腹大患”。它通过操控大量 “傀儡主机” 发起海量请求&#xff0c;直接瘫痪目标服务器或网络链路&#xff0c;导致业务中断、用户流失甚至品牌声誉受损。今天&#xff0c;我们…

在linux系统中下载Andconda

下载前的准备工作 在开始下载 Anaconda 之前&#xff0c;做好充分的准备工作能避免后续出现不必要的麻烦&#xff0c;让整个过程更加顺畅。 确认系统架构 Linux 系统有 32 位和 64 位之分&#xff0c;不同架构对应的 Anaconda 安装包不同。你可以通过以下命令查看系统架构&a…

学习threejs,使用EffectComposer后期处理组合器(采用RenderPass、UnrealBloomPass、FilmPass渲染通道),实现交互式 3D blob

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录一、&#x1f340;前言1.1 ☘️THREE.EffectComposer 后期处…

LLM - windows下的Dify离线部署:从镜像打包到无网环境部署(亲测,包含插件部署)

一、离线部署原理 通过Docker的save/load机制实现镜像的物理介质迁移,配合Docker Compose编排文件的环境适配能力,可在完全断网的环境中快速部署复杂应用。整个过程分为在线环境准备和离线环境还原两个阶段。 二、在线环境操作 1. 环境准备 在线环境:一台可以访问互联网的…