嵌入式系統學習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
英文地址,請注明出處:http://en.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. 環境準備 在線環境:一臺可以訪問互聯網的…