精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

    文章

    4747

    瀏覽量

    68349
  • 回調函數
    +關注

    關注

    0

    文章

    87

    瀏覽量

    11543
  • 單鏈表
    +關注

    關注

    0

    文章

    13

    瀏覽量

    6915
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

    C語言鏈表的應用

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

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

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

    C語言鏈表知識點(2)

    C語言鏈表知識點(2)
    發表于 08-22 10:38 ?313次閱讀
    <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 ?1753次閱讀

    OpenHarmony中軟件模塊的鏈表實現

    為了性能考慮,嵌入式系統一般使用C語言進行開發,由于C語言標準庫沒有封裝鏈表,所以嵌入式系統一般自己設計和實現
    發表于 08-30 09:25 ?332次閱讀