C語言結構體高階篇,linux核心鍊錶

2021-07-13 21:21:03 字數 869 閱讀 9623

昨天初步學習了linux核心鍊錶,記錄一下

首先要先知道結構體的乙個很隱秘的知識點,如下:

#include "stdlib.h"

#include "stdio.h"

#include "string.h"

typedef struct worker

;int main()

有了這個基礎就可以理解linux核心鍊錶了

typedef struct _tag_linklistnode

linklistnode;

typedef struct _teacher

teacher;

那麼下面我們就可以建立乙個node的鍊錶,然後將 

teacher插入到鍊錶內。

傳統鍊錶是將鍊錶操作和業務混合到一塊了,如下圖

linux鍊錶則實現了分離,如下圖

我們可以向phead中新增teacher節點

我們可以將建立的teacher中的linklistnode的首位址新增打phead,然後在對鍊錶操作的時候看一通過偏移位址來找到具體的結構體,當然有個比較方便的方法,那就是將linklistnode node放在結構體的第一位,這樣偏移量是0,他們的位址就重合和,會省去很多麻煩的操作。

感覺這種鍊錶就好比給針穿線,鍊錶相當於線,結構體相當於針,每個結構體都有乙個針孔,用線把他們傳串到一起

一種高度復合的C語言結構體高階應用

一種高度復合的結構體,結構體中有 union,union中又有結構 typedef struct packed 1 supercharger maccessrestrictiondata t tard mextard t textard godbpara t odbpara packed 1 req...

C語言面試題高階篇

1.判斷單鏈表是否帶環?若帶環,求環的長度?求環的入口點?首先判斷是否帶環,在這裡用快慢指標,快指標每次走兩步,慢指標每次只走一步,無環的快指標會先走到頭,如果快指標等於慢指標那麼說名單鍊錶存在環,會返回 相遇點,如果無環會返回 空指標。為什麼乙個走兩步乙個走一步就可以呢,因為fast比slow走的...

C語言高階篇 2 C語言位操作

1 位操作符 1 位與 2 位或 3 位取反 4 位異或 位與 位或 位異或的特點總結 位與 任何數,其實就是1或者0 與1位與無變化,與0位與變成0 位或 任何數,其實就是1或者0 與1位或變成1,與0位或無變化 位異或 任何數,其實就是1或者0 與1位異或會取反,與0位異或無變化 2 左移位 與...