NS2自身的LIST鍊錶

2021-04-13 03:27:34 字數 2006 閱讀 2672

本人在看ns2源**的時候發現有list_head,list_entry,list_init,list_remove等等,經過檢視源**和上網翻閱資料,發現ns2有其自身定義的鍊錶結構,定義在bsd-list.h中,於是寫了個簡短的說明,方便他人使用.由於是自己看源**後自己理解的,如有錯誤,請告知

本文件分三部分

1.原始碼解釋

2.原始碼

3.應用舉例 1.

解釋如下:

list_head(name, type)

是定義乙個結構體

name,

其中包含乙個

type

型別的指標

*lh_first,

用於指向表頭

list_entry(type)

用於定義兩個指標

,*le_next

指向鍊錶的下乙個元素

,**le_prev

指向」address of previous next element」,

即該元素在該佇列中的前乙個元素的

le_next

的位址list_init(head)

初始化(head)->lh_first

為空list_insert_after(listelm, elm, field)

將elm

插在listelm

後面list_insert_before(listelm, elm, field)

將elm

插在listelm

前面list_insert_head(head, elm, field)

將elm

插在表頭,對於

elm,

將le_prev

指向其自身的位址

」(elm)->field.le_prev = &(head)->lh_first」 其中

field

指的是list_entry

中定義的結構體例項

list_remove(elm, field)

從鍊錶中移出

elm

2.原始碼如下:

#define list_head(name, type)/

struct name

#define list_entry(type)/

struct

/** list functions.

*/#definelist_init(head)

#define list_insert_after(listelm, elm, field)

#define list_insert_before(listelm, elm, field)

#define list_insert_head(head, elm, field)

#define list_remove(elm, field)

3.如何使用:

//此例建立了乙個鍊錶,名為

rt_path_list,

該鍊錶中的元素型別為

aodv_path

class aodv_path ;

list_head(aodv_paths, aodv_path);

//定義結構體

aodv_pathsrt_path_list;

// rt_path_list

相當與源**中的

head //

初始化list_init(&rt_path_list);

//在p

元素後插入

path

元素list_insert_after(p, path, path_link);

//在表頭插入

path

list_insert_head(&rt_path_list, path, path_link);

//將path

從鍊錶中刪除

list_remove(path, path_link);

//獲取煉表表頭元素

aodv_path *path = rt_path_list.lh_first;

ns2中變數的繫結

asrmagnet asrmagent bind pdistance pdistance 實變數 bind requerstor requestor 整形變數 bind time lastsent lastsesssent 時間變數 bind bw ctrlimit ctrlbwlimit 帶框變數...

基於ns2的mip切換分析

rel file list href file c 5cdocume 7e1 5ckgn 5clocals 7e1 5ctemp 5cmsohtml1 5c01 5cclip filelist.xml rel edit time data href file c 5cdocume 7e1 5ckgn...

ns2 中得到Agent的例項

下面 說明了如何訪問其他節點的agent,以aodv協議為例 新增以下 到aodv.cc.用這種方法也可以訪問其他物件,比如 mobilenode,等等.aodv aodvagent set i to be the node id char command 256 agent aodv info i...