在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

應用開發(fā)中結構體和鏈表的關系是怎樣的

玩轉單片機 ? 來源:玩轉單片機 ? 作者:玩轉單片機 ? 2022-12-12 10:57 ? 次閱讀

不知道各位讀者是怎么理解鏈表的,還有就是鏈表和結構體的關系?最近開發(fā)的項目資源不是很緊湊,就用了面向對象編寫,就大量的使用到結構體,有時還會配合共同體嵌套使用,順便回顧了一些結構體的使用,這里主要簡單回顧結構體和鏈表的關系;

鏈表在RTOS上比較常見,這里會把復雜的東西簡單化,這也是為啥有些推文的文字很少的原因,碼農(nóng)的產(chǎn)出就是代碼,核心就是看相關代碼;鏈表分單鏈表和雙鏈表,核心都差不多的,就用單鏈表做展示;

| 定義節(jié)點

鏈表的最小單位就是節(jié)點,節(jié)點的定義就是鏈表的基礎,下面展示一些定義的小案例:

//正確定義方式之一
struct node
{
    unsigned char data;
    struct node *next;
};


//錯誤定義方式之一
typrder struct node
{
    unsigned char data;
    node_t *next;
}node_t;

代碼都是一行一行執(zhí)行的,如果沒有提前聲明調(diào)用的話,代碼編譯階段就會報錯,同樣的,類型定義比類型調(diào)用使用晚也會報錯;有些初學者會對結構體使用同名結構體會有疑問,其實把同名的結構體換個思路,上面的第二行是不是定義了一個struct node類型的數(shù)據(jù),結構體成員是不是變量類型+變量名,是不是符合結構體的基本使用,所有這樣的用法是合法的;

| 鏈接成表

鏈表的最小單位就是節(jié)點,那么多定義幾個節(jié)點,然后就讓它們鏈接起來,那么就形成了鏈表,那么這條“鏈”是啥呢,有時怎么把它們關聯(lián)起來的呢?學過鏈表的同學就很清楚,就是節(jié)點中的同名結構體指針,這個指針就像電話號碼,直接通過電話號碼就能找到對應的人,同理也可以通過指針找到對應的節(jié)點;

申請內(nèi)存的坑,申請的內(nèi)存一定要強制轉換類型,不強制轉換默認是返回一個任意類型的指針(void *),不強制轉換類型編譯也會出錯:

int main()
{
inttemp=10;
// 沒有強制轉換類型,編譯報錯
  int *p = malloc(siezof(temp))
}

列個完整的小程序,看完基本就學會了鏈表:

#include "stdio.h"
#include "stdlib.h"


typedef struct node
{
    unsigned char data;
    struct node *next;
}node_t;


int main()
{
  // 創(chuàng)建幾個節(jié)點
  node_t* node1=(node_t*)malloc(sizeof(node_t));
  node_t* node2=(node_t*)malloc(sizeof(node_t));
  node_t* node3=(node_t*)malloc(sizeof(node_t));
  
  // 初始數(shù)據(jù)
  node1->data = 1;
  node2->data = 2;
  node3->data = 3;
  
  // 鏈接成表
  node1->next =  node2;
  node2->next =  node3;
  node3->next =  node1;
  
  // 打印數(shù)據(jù)
  printf("data:%d
", node1->data);          // 節(jié)點1的數(shù)據(jù) 
  printf("data:%d
", node1->next->data);        // 節(jié)點2的數(shù)據(jù)
  printf("data:%d
", node1->next->next->data);    // 節(jié)點3的數(shù)據(jù)
  printf("data:%d
", node1->next->next->next->data);  // 節(jié)點1的數(shù)據(jù)
  
  // 釋放內(nèi)存 
  free(node1); 
  free(node2);
  free(node3);
}

鏈表的增刪改查本質(zhì)就是對節(jié)點中的指針操作,以及節(jié)點的創(chuàng)建和釋放,基本不是什么大問題;看到這應該對鏈表基礎知識沒有疑問了吧,覺得有收獲的同學動動小手指點個贊吧,我是Noah,我們下篇推文再見!

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • RTOS
    +關注

    關注

    24

    文章

    845

    瀏覽量

    120864
  • 代碼
    +關注

    關注

    30

    文章

    4891

    瀏覽量

    70363

原文標題:通俗|結構體與鏈表

文章出處:【微信號:玩轉單片機,微信公眾號:玩轉單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    晶體結構晶面和晶向的關系

    晶面和晶向是晶體學兩個核心的概念,它們與硅基集成電路工藝的晶體結構有密切的關系
    的頭像 發(fā)表于 06-05 16:58 ?368次閱讀
    晶體<b class='flag-5'>結構</b><b class='flag-5'>中</b>晶面和晶向的<b class='flag-5'>關系</b>

    滲壓計在混凝土結構的安裝指南

    在現(xiàn)代土木工程和巖土工程,滲壓計是監(jiān)測混凝土結構體內(nèi)孔隙水壓力變化的重要工具。南京峟思公司生產(chǎn)的滲壓計因其高精度和可靠性而被廣泛應用于各種工程監(jiān)測項目中。一、滲壓計在混凝土結構
    的頭像 發(fā)表于 05-28 10:55 ?114次閱讀
    滲壓計在混凝土<b class='flag-5'>結構</b><b class='flag-5'>體</b><b class='flag-5'>中</b>的安裝指南

    GLAD應用:全息光柵模擬

    用于模擬全息記錄介質(zhì)形成的梯度折射率分布。全息結構一旦形成,就可以在傳輸過程中將一束入射光波逐漸轉換成形成體全息結構的另一束光波。兩束光波之間的能量傳遞轉換效率與
    發(fā)表于 05-15 09:32

    程序設計與數(shù)據(jù)結構

    《程序設計與數(shù)據(jù)結構》重點闡述了三大方向內(nèi)容: 1. C語言學習的痛點:針對當前工程師在C語言學習的痛點,如指針函數(shù)與函數(shù)指針,如何靈活應用結構
    發(fā)表于 05-13 16:45

    C語言中結構與聯(lián)合體的深度解析:內(nèi)存布局與應用場景

    一、基礎概念與核心差異 1.1 結構(Struct)的本質(zhì) **結構是C語言中實現(xiàn)數(shù)據(jù)封裝的基石,其核心特征在于內(nèi)存獨立性。每個成員變量在內(nèi)存
    發(fā)表于 04-08 09:18

    學習智能開發(fā)

    智能是大模型的應用落地,正在學習,這本書太及時了,非常想看看。
    發(fā)表于 03-27 15:48

    軟國際Lumi智能開發(fā)平臺支持DeepSeek

    作為大模型領域的一顆璀璨新星,DeepSeek從模型結構到訓推流程進行了全面優(yōu)化,并完全開源,打破了算力依賴路徑,推動行業(yè)從 “規(guī)模至上” 邁向 “效率優(yōu)先”。軟國際Lumi智能開發(fā)
    的頭像 發(fā)表于 02-28 15:46 ?540次閱讀

    噪聲與ADC的范圍和位數(shù)是什么關系呢?怎樣選用和匹配?

    以上三者是什么關系呢?怎樣選用和匹配?ADC的動態(tài)輸入范圍一般都有多大的?謝謝
    發(fā)表于 02-08 07:14

    結構成員的順序會影響結構的大小嗎

    相同的結構成員,如果把順序調(diào)整一下,會不會影響結構的大小? 答案是會的,這主要跟字節(jié)對齊有關。 比如這樣的結構
    的頭像 發(fā)表于 11-25 16:24 ?532次閱讀

    一文讀懂BOM管理(下):BOM結構/實例,PLM的BOM管理

    BOM管理進階:如何寫一個BOM結構怎樣開始BOM管理?
    的頭像 發(fā)表于 11-13 15:19 ?1579次閱讀
    一文讀懂BOM管理(下):BOM<b class='flag-5'>結構</b>/實例,PLM<b class='flag-5'>中</b>的BOM管理

    C語言和C++結構的區(qū)別

    同樣是結構,看看在C語言和C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?697次閱讀

    在TAS5558兩者之間的映射關系怎樣的?

    在TAS5558,兩者之間的映射關系怎樣的?
    發(fā)表于 10-18 07:18

    請問VG與增益的線性關系怎樣的?

    看了VCA820數(shù)據(jù)手冊,沒找到VG與增益的線性關系怎樣的,應該是增益線性可控的吧??還是自己理解錯咯? 請求回答!!!
    發(fā)表于 09-26 06:21

    AMC1302-Q1芯片輸入輸出電壓對應關系怎樣的?

    AMC1302-Q1芯片輸入輸出電壓對應關系怎樣的?根據(jù)數(shù)據(jù)手冊,增益41,輸出Vo=(V+—V-)=1.44+41*Vi 嗎? 另下面電路圖是TI官網(wǎng)上的設計,輸入1.2mV/A與輸出77.7mV/A,是
    發(fā)表于 08-08 08:01

    ota升級的庫結構upgrade_server_infopespconn的作用是什么?

    check_cb; struct espconn *pespconn; }; 這個結構已經(jīng)有ip,port,pespconn這個結構
    發(fā)表于 07-12 06:33
    主站蜘蛛池模板: 天天做爽夜夜做爽 | 色综合欧美 | 久久青草国产手机看片福利盒子 | 在线天堂中文官网 | 狠狠色丁香婷婷综合久久来 | 成年人一级片 | 午夜视频网站在线观看 | 嫩草影院入口一二三免费 | 91亚洲视频在线 | 激情综合激情五月 | 亚洲爱爱图| 老司机亚洲精品影院在线 | 一级无毛片 | 电影一区二区三区 | 国产乱码精品一区二区三区四川人 | 求网址你懂的手机在线观看网站 | 特级毛片免费视频播放 | 噜噜噜 综合 亚洲 | 欧美三级影院 | 亚洲免费三级 | 午夜伦理片免费观看在线 | 日韩一级片在线免费观看 | 一区二区免费播放 | 黄色免费网站视频 | 亚洲欧美一区二区三区四区 | 亚洲日本免费 | 亚洲午夜久久久久久噜噜噜 | 99综合色 | 特级黄一级播放 | 黄色网址在线免费观看 | 插插插叉叉叉 | 久久精品影视 | 日本在线视| 一级毛片成人免费看a | 日韩av线观看 | 天天干天天操天天拍 | 在线播放免费 | 五月月色开心婷婷久久合 | 欧美在线专区 | 91色蝌蚪| 九九re|