C 單鏈表 資料結構

2022-02-25 15:20:26 字數 2844 閱讀 8793

學習單鏈表的原始碼專案:

鍊錶是用一組任意的儲存單元來儲存線性表中的資料元素(在儲存單元中可以是連續的,也可以是不連續的)。鍊錶在儲存資料元素時,除了儲存資料元素本身的資訊外,還要儲存與它相鄰的資料元素的儲存位址資訊。這兩部分資訊組成該資料元素的儲存映像,稱為節點。

節點的形象圖如下:

首先定義乙個類node來表示這些節點:

public

class node

public node(nodep)

public

node(t val)

public

node()

#endregion

//資料域屬性

public

t data

set }

//引用域屬性

public nodenext

set }

}

網上找到 ,把迴圈列表 和 雙向鍊錶都弄上去了,也好提前了解下

因此要定義乙個類表示整個鍊錶,其中中間當然運用到了之前寫node類,類中的屬性如下:

private nodehead;//

單鏈表頭引用

//頭引用屬性

public nodehead

set }

//建構函式

public

linklist()

接下來就是實現之前講的順序表中定義好的介面 

//

求單鏈表長度

public

intgetlength()

return

len;

}//清空單鏈表

public

void

clear()

public

bool

isempty()

else

}public

bool

isfull()

//在單鏈表末尾新增新元素

public

void

p =head;

while(p.next!=null

)

p.next =q;

}//在單鏈表第i個節點位置插入乙個item的節點

public

void insert(t item, int

i)

if (i == 1

)

node

p =head;

node

r = new node();

int j = 1

;

while (p.next != null && j

if (j ==i)

}//刪除單鏈表第i節點

public t delete(int

i)

node

q = new node();

if (i == 1

)

node

p =head;

int j = 1

;

while (p.next != null && j

if (j ==i)

else

}//獲取單鏈表第i個資料元素

public t getelem(int

i)

node

p = new node();

p =head;

int j = 1

;

while (p.next != null && j

if (j ==i)

else

}//在單鏈表中查詢值為value的節點

public

intlocate(t value)

node

p = new node();

p =head;

int i = 1

;

while (!p.data.equals(value) && p.next != null

)

return

i; }

實現這些介面都不難,還是要理解鍊錶的具體操作原理,只是記**是沒用的,不用多久就忘的差不多,p.next等這些地方可以聯想到c中的指標,不過c中的指標有時挺危險的,c#中的也許就安全多了吧。

然後再玩玩一些經典題目,首先就是單鏈表倒置

//

-----------------------------------單鏈表擴充套件方法---------------------------------------------

//////

單鏈表倒置

/// ///

public

void reverslinklist(linklisth)

}

再做個題目:構造單鏈表hb,要求hb只包含ha表中所有值不相同節點

///

///構造單鏈表hb,要求hb只包含ha表中所有值不相同節點

/// ///

///public linklistpurge(linklistha)

if(q==null

)

}return

hb; }

C 資料結構 單鏈表

c 實現 首先,構造乙個單鏈表的節點類 class link 然後是以這個節點類為基礎,建立單鏈錶類 這裡簡單實現了單鏈表的兩個功能新增和輸出 class linklist if head.next null else if head.next null 列印全部資料 public void pri...

c 資料結構單鏈表

鍊錶定義 typedef struct linklistlinklist,linknode linklist 表示頭結點,linknode 表示節點linklist head linknode node 鍊錶初始化 bool linkinit linklist l l next null l dat...

C 資料結構 單鏈表

單鏈表的實現 include using namespace std template typename t struct node template typename t class linklist template typename t linklist linklist template t...