色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

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

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

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

| 定義節點

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

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


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

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

| 鏈接成表

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

申請內存的坑,申請的內存一定要強制轉換類型,不強制轉換默認是返回一個任意類型的指針(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()
{
  // 創建幾個節點
  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));
  
  // 初始數據
  node1->data = 1;
  node2->data = 2;
  node3->data = 3;
  
  // 鏈接成表
  node1->next =  node2;
  node2->next =  node3;
  node3->next =  node1;
  
  // 打印數據
  printf("data:%d
", node1->data);          // 節點1的數據 
  printf("data:%d
", node1->next->data);        // 節點2的數據
  printf("data:%d
", node1->next->next->data);    // 節點3的數據
  printf("data:%d
", node1->next->next->next->data);  // 節點1的數據
  
  // 釋放內存 
  free(node1); 
  free(node2);
  free(node3);
}

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

審核編輯:郭婷

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

    關注

    22

    文章

    815

    瀏覽量

    119695
  • 代碼
    +關注

    關注

    30

    文章

    4791

    瀏覽量

    68688

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

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

收藏 人收藏

    評論

    相關推薦

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

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

    C語言和C++結構的區別

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

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

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

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

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

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

    check_cb; struct espconn *pespconn; }; 這個結構已經有ip,port,pespconn這個結構
    發表于 07-12 06:33

    ESP32-C3如何把一個const結構固定放在生成的bin文件的最末尾?

    我的芯片是ESP32-C3,需要把一個const結構固定放在生成的bin文件的最末尾,例如: #define USER_SECTION__attribute__ ((used,section
    發表于 06-18 07:52

    你是否真的了解結構占用了多少字節?

    結構成員所占內存空間大小一般情況下,如果想知道結構成員的內存占用情況需要:1、先用結構在內
    的頭像 發表于 06-04 08:04 ?488次閱讀
    你是否真的了解<b class='flag-5'>結構</b><b class='flag-5'>體</b>占用了多少字節?

    嵌入式C語言結構基本實現

    : ? ??在struct 聲明了一個含有若干新成員的數據類型。 ????tag ?是結構標簽。 ????member-list ?是標準的變量定義,比如 int i; 或者 float f,或者其他
    的頭像 發表于 05-11 08:49 ?1056次閱讀
    嵌入式<b class='flag-5'>中</b>C語言<b class='flag-5'>結構</b><b class='flag-5'>體</b>基本實現

    C語言結構史上最詳細的講解【軟件干貨】

    struct結構數據類型 前言 我們知道,在C語言中有一些基本的數據類型,如?char?int?float?long?double?string(c99) 等等數據類型,他們可以表示一些事物
    的頭像 發表于 03-28 17:52 ?783次閱讀

    數組和鏈表在內存的區別 數組和鏈表的優缺點

    數組和鏈表在內存的區別 數組和鏈表的優缺點? 數組和鏈表是常見的數據結構,用于組織和存儲數據。它們在內存
    的頭像 發表于 02-21 11:30 ?1056次閱讀

    數組和鏈表有何區別

    數組和鏈表的區別,這個問題,不僅面試中經常遇到,考研的同學也得掌握才行。
    的頭像 發表于 02-19 15:33 ?522次閱讀
    數組和<b class='flag-5'>鏈表</b>有何區別

    求助,請問一個結構如何全部定義到 __attribute__ 區域?

    請問一個結構如何全部定義到 __attribute__ 區域? 例如我這里涉及到一些高速計算的緩存,計劃將緩存數據存儲到 __attribute__ 區域。 三個結構 ,每個
    發表于 01-16 07:29

    經典 C 語言編程,結構和聯合體如何共用?

    結構 結構占用的內存大小,首先和編譯器的系統位數有關系,類似于CPU是 64 bits 還是 32 bits 的情形;其次,
    的頭像 發表于 01-11 18:24 ?1398次閱讀
    經典 C 語言編程,<b class='flag-5'>結構</b><b class='flag-5'>體</b>和聯合體如何共用?

    結構與指針的關系

    在C語言中,結構(Struct)是一種用戶自定義的數據類型,它允許您將不同類型的數據項組合在一起,以便形成一個更復雜的數據結構結構可以
    的頭像 發表于 01-11 08:00 ?1008次閱讀
    <b class='flag-5'>結構</b><b class='flag-5'>體</b>與指針的<b class='flag-5'>關系</b>

    keil arm工程結構1字節對齊如何實現

    在Keil Arm工程結構的對齊方式可以通過使用特定的編譯器指令或者關鍵字來實現。結構的對齊方式會直接影響
    的頭像 發表于 01-05 14:40 ?3848次閱讀
    主站蜘蛛池模板: 免费人成在线观看视频不卡| 亚洲国产精品综合久久一线| 一二三四在线观看高清电视剧 | 美女张开腿露尿口给男人亲| 99久久精品久久久久久清纯| 日日操夜夜摸| 国产亚洲视频在线播放香蕉| 中国xxxxx69| 日日碰狠狠添天天爽| 韩国精品韩国专区久久| 999久久免费高清热精品| 天天噜日日噜夜夜噜| 老师系列高H文| 国产99久久久国产精品免费看| 亚洲视频在线免费看| 欧美videos人牛交| 国产色婷亚洲99精品AV在线| 最近韩国HD免费观看国语| 色偷偷超碰97人人澡人人| 久久精品熟女亚洲AV国产| 俄罗斯大白屁股| 纵欲(高H)| 性满足久久久久久久久| 男助理憋尿PLAY灌尿BL出去| 国产色婷婷精品人妻蜜桃成熟| 97精品免费视频| 亚洲精品电影久久久影院| 青青草原免费在线| 久久黄色片| 国产精品久久高潮呻吟无码| 123成人站| 亚洲.欧美.中文字幕在线观看| 内射一区二区精品视频在线观看 | 婷婷久久综合九色综合伊人色| 久久久国产精品免费A片蜜芽广| 被肉日常np高h| 11 13加污女qq看他下面| 亚洲国产综合久久精品| 日本无翼恶漫画大全优优漫画| 久久久久九九| 国产亚洲精品久久久久小|