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

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

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

3天內不再提示

C語言的單鏈表應用

汽車電子技術 ? 來源:玩轉單片機 ? 作者: noah ? 2023-02-20 15:03 ? 次閱讀

最近在看一些開源項目,大佬的思路還是很值得去學習,今天就簡單介紹一下單鏈表的應用,配合回調函數可以玩出新花樣,廢話不多說直接看代碼!

| 頭文件

#include "stdio.h"
#include "stdint.h"


typedef struct sensor
{
    uint8_t flag;
    void (*callback)(void);
    struct sensor* next;
}sensor_t;


extern sensor_t sensor1;
extern sensor_t sensor2;
extern sensor_t sensor3;


void sensor1_callback(void);
void sensor2_callback(void);
void sensor3_callback(void);


void sensor_init(sensor_t* handle, void(*callback)(void));
void sensor_start(sensor_t* handle);
void sensor_handle(void);

| 源碼

// 鏈表頭指針
static sensor_t* head_handle = NULL;


// 創建對象
sensor_t sensor1;
sensor_t sensor2;
sensor_t sensor3;


// 回調函數
void sensor1_callback(void)
{
    printf("sensor1!\\r\\n");
}


void sensor2_callback(void)
{
    printf("sensor2!\\r\\n");
}


void sensor3_callback(void)
{
    printf("sensor3!\\r\\n");
}


// 傳感器初始化
void sensor_init(sensor_t* handle, void(*callback)(void))
{
  handle->callback = callback;
  handle->flag = 0x00;
  sensor_start(handle);
}


// 傳感器開始(往鏈表添加節點)
void sensor_start(sensor_t* handle)
{
  sensor_t* target = head_handle;
  if(head_handle == NULL)
  {
    /* 鏈表為空 */
    head_handle = handle;
    handle->next = NULL;
  }
  else
  {
    /* 鏈表中存在節點,遍歷找最后一個節點 */
    while(target->next != NULL)
    {
      /* 去掉重復節點 */
      if(target == handle){
        break;
      }
      target = target->next;
    }
    target->next = handle;
    handle->next = NULL;
  }
}


// 傳感器處理(遍歷鏈表)
void sensor_handle(void)
{
  sensor_t* target = head_handle;
  while(target != NULL)
  {
    target->callback();
    target = target->next;
  }
}

| 運用

int main()
{
    sensor_init(&sensor1,sensor1_callback);
    sensor_init(&sensor2,sensor2_callback);
    sensor_init(&sensor3,sensor3_callback);
    sensor_handle();
    while (1)
    {
        /* code */
    }
}

這個寫法是理論上只會受限于內存大小,理想狀態下可以無限創建對象,通過綁定回調函數,能在一定程度上解決調用耦合的問題!

--END--

收錄于合集 **#**c語言

2

上一篇C語言|void 指針

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

    關注

    30

    文章

    4857

    瀏覽量

    69529
  • 回調函數
    +關注

    關注

    0

    文章

    87

    瀏覽量

    11665
  • 單鏈表
    +關注

    關注

    0

    文章

    13

    瀏覽量

    6942
收藏 人收藏

    評論

    相關推薦

    C語言-鏈表(單向鏈表、雙向鏈表)

    在前面章節已經學習了數組的使用,數組的空間是連續空間,數組的大小恒定的,在很多動態數據存儲的應用場景下,使用不方便;而這篇文章介紹的鏈表結構,支持動態增加節點,釋放節點,比較適合存儲動態數據的應用場景,而且鏈表的空間是存儲在堆上面的,可以動態分配,釋放
    的頭像 發表于 09-09 11:30 ?1789次閱讀

    源碼|學生信息管理系統(C語言鏈表實現)

    源碼|學生信息管理系統(C語言鏈表實現)
    發表于 11-03 10:24 ?568次閱讀

    C語言實現靜態鏈表的建立

    在這么卷的時代,我覺得硬件工程師還是 要掌握基本的C語言編寫能力,鏈表在學生階段是一個比較難的知識點,可能有些同學上完一個大學都不會鏈表的編寫,但是在未來工作中,
    發表于 01-13 15:08 ?827次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>實現靜態<b class='flag-5'>鏈表</b>的建立

    C語言鏈表的應用

    最近在看一些開源項目,大佬的思路還是很值得去學習,今天就簡單介紹一下鏈表的應用,配合回調函數可以玩出新花樣,廢話不多說直接看代碼!
    發表于 02-17 09:22 ?471次閱讀

    C語言算法題:反轉一個單向鏈表

    鏈表是編程學習的一個難點。其實,在C語言編程以及單片機裸機開發中,鏈表運用并不多。但是如果想提升嵌入式技能水平或收入水平,可以考慮深入嵌入式系統層面(如參與操作系統設計、深入學習新的操
    發表于 06-21 11:07 ?1051次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>算法題:反轉一個單向<b class='flag-5'>鏈表</b>

    C語言鏈表知識點(2)

    C語言鏈表知識點(2)
    發表于 08-22 10:38 ?374次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>鏈表</b>知識點(2)

    C語言鏈表

    C語言鏈表,,,
    發表于 11-07 17:19

    C語言玩轉鏈表

    C語言是必學的一個課程,不管你是單片機還是嵌入式物聯網,都是基礎,所以還是要好好學習的今天推薦的資料是關于C語言鏈表的資料我自己看了一下主要
    發表于 11-13 13:50

    怎么實現c語言循環鏈表?

    怎么實現c語言循環鏈表?
    發表于 10-19 06:07

    C語言實現鏈表舉例

    所謂鏈表,就是用一組任意的存儲單元存儲線性表元素的一種數據結構。鏈表又分為鏈表、雙向鏈表和循環鏈表
    發表于 07-11 16:40 ?87次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>實現<b class='flag-5'>單</b><b class='flag-5'>鏈表</b>舉例

    C加加建立動態鏈表

    C加加建立動態鏈表利用C語言c++編寫程序
    發表于 11-19 13:43 ?0次下載

    C語言鏈表的模擬學生成績管理系統

    鏈表編寫的模擬學生成績管理系統,索要進行的項目可以再菜單中進行選擇
    發表于 11-26 15:46 ?12次下載

    C語言鏈表相關資料下載

    C語言鏈表相關資料
    發表于 03-08 10:47 ?5次下載

    C語言_鏈表總結

    本篇文章介紹C語言鏈表相關知識點,涉及鏈表的創建、單向鏈表、循環鏈表、雙向
    的頭像 發表于 08-14 09:53 ?1876次閱讀

    OpenHarmony中軟件模塊的鏈表實現

    為了性能考慮,嵌入式系統一般使用C語言進行開發,由于C語言標準庫沒有封裝鏈表,所以嵌入式系統一般自己設計和實現
    發表于 08-30 09:25 ?393次閱讀
    主站蜘蛛池模板: 国产精品1卡二卡三卡四卡乱码 | 亚洲精品久久区二区三区蜜桃臀 | 一二三四在线视频社区8 | 天天影视色欲 影视 | 久久精品中文字幕 | 奶头从情趣内衣下露了出来AV | 一本久道久久综合狠狠躁AV | 99pao成人国产永久免费视频 | 亚洲在线国产日韩欧美 | 嫩草国产福利视频一区二区 | 国产高清美女一级毛片久久 | 久久成人亚洲 | 中文字幕不卡免费高清视频 | 亚洲AV午夜精品麻豆AV | 亚洲国产日韩a精品乱码 | 尤物99久久久合集一区区 | Y8848高清私人影院软件优势 | 中文无码乱人伦中文视频播放 | 99视频精品全部免费免费观 | 国产91青青成人a在线 | 亚洲精品久久久午夜福利电影网 | 国产免费久久精品国产传媒 | 麻豆免费观看高清完整视频 | japanesen女同 | 二级毛片免费观看全程 | 芭乐草莓樱桃丝瓜18岁大全 | 亚洲午夜精品A片久久WWW软件 | 果冻传媒在线播放 免费观看 | 色婷婷亚洲五月 | 健身房被教练啪到腿软H | qvod伦理片| 果冻传媒 在线播放观看 | 欧美成a人片免费看久久 | 中字幕视频在线永久在线观看免费 | 九九热在线视频 | 亚洲精品第五页中文字幕 | 人人看人人看 | 老子午夜伦不卡电影院 | 中文无码第3页不卡av | 思思re热免费精品视频66 | 久久99精品国产自在自线 |