前言
在一般的鏈表中,數(shù)據(jù)是存儲在node節(jié)點中的,每次pop出來的數(shù)據(jù)是以node為單位的。這篇文章,我們對一般的鏈表進行改進,可以pop任意字節(jié)的數(shù)據(jù),也就是說,每次pop的數(shù)據(jù)數(shù)據(jù)是以任意字節(jié)為單位的,可以pop 10Byte,也可以500Byte,這種方法比較靈活。
原理
針對一般的鏈表,我們做的改進主要是在每個node中加了一個字段pos,用來標記這個node的data的下標。比如說這個node打data數(shù)據(jù)大小為10,它的pos就為0,這時候就表示這10個字節(jié)都可以用。然后可以pop 2個字節(jié),這時候pos就成了2,表示還有8個字節(jié)可以用。
實現(xiàn)的話,我們可以定義這樣的結構體:
typedef struct Node
{
int id; //每個link的標識符
int pos; //記錄node數(shù)據(jù)的下標
int size; //記錄node數(shù)據(jù)的總大小
int num; //記錄link的node個數(shù),僅頭結點使用
char *addr; //數(shù)據(jù)data
struct Node *next; //next node
} Node;
對于具體的原理實現(xiàn),我們可以用一張圖片來清楚地說明一下:
例子
下面是一個完整的的代碼例子供參考,可以直接運行:
#include
#include
#include
#include
#include
class PkgLink
{
public:
PkgLink() {m_link_header.clear();}
~PkgLink() {}
typedef struct Node
{
int id;
int pos;
int size;
int num; //for head;
char *addr;
struct Node *next;
} Node;
std::vector
審核編輯:劉清
-
數(shù)據(jù)存儲
+關注
關注
5文章
986瀏覽量
51109
發(fā)布評論請先 登錄
相關推薦
SIMPLIS POP仿真分析
![SIMPLIS <b class='flag-5'>POP</b>仿真分析](https://file1.elecfans.com/web2/M00/AD/7B/wKgaomVN10aAfLoEAACELWO_dz0648.jpg)
探索字節(jié)隊列的魔法:多類型支持、函數(shù)重載與線程安全
![探索<b class='flag-5'>字節(jié)</b><b class='flag-5'>隊列</b>的魔法:多類型支持、函數(shù)重載與線程安全](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
Freertos隊列項里的字節(jié)長度是否可以獲???
【MiCOKit試用體驗】慶科MiCO系統(tǒng)篇(4)MiCO RTOS消息隊列
keystoneII arm示例程序網(wǎng)卡中斷,請問隊列收到包后,如果暫時不從隊列中pop包,是否可以在隊列這個級別清除中斷信號?
利用變體隊列實現(xiàn)任意復雜數(shù)據(jù)集合傳遞(很方便)
FreeRTOS消息隊列和RT-Thread消息隊列的使用注意事項介紹
簡單羅列幾種隊列管理邏輯電路
POP3協(xié)議和Base 64編碼原理
![<b class='flag-5'>POP</b>3協(xié)議和Base 64編碼原理](https://file1.elecfans.com//web2/M00/A6/1C/wKgZomUMO8WAI2c9AAAKiYO7Cew533.jpg)
AWorks軟件設計,郵箱、消息隊列和自旋鎖使用方法
![AWorks軟件設計,郵箱、消息<b class='flag-5'>隊列</b>和自旋鎖使用方法](https://file.elecfans.com/web1/M00/53/46/pIYBAFsgb_-AdBXKAAA4e9-sHSE174.png)
可pop任意字節(jié)隊列代碼的優(yōu)化
RTOS消息隊列的應用
![RTOS消息<b class='flag-5'>隊列</b>的應用](https://file1.elecfans.com/web2/M00/88/CB/wKgaomR0E0WAGaiCAAAZvY_r7Cs460.png)
FreeRTOS消息隊列介紹
![FreeRTOS消息<b class='flag-5'>隊列</b>介紹](https://file1.elecfans.com/web2/M00/8C/25/wKgZomSmgi6AbaURAAJ2j7wCnv4174.jpg)
MCU專屬隊列功能模塊之QueueForMcu應用
![MCU專屬<b class='flag-5'>隊列</b>功能模塊之QueueForMcu應用](https://file1.elecfans.com/web2/M00/C6/02/wKgaomX6XC-AHm7RAAAU4puuo8M220.png)
評論