1、加深記憶,以便在以後的工作中能輕鬆的完成工作
2、便於查閱
1、單向鍊錶的單個節點(其實鍊錶的單個節點中只有乙個next指標,指向鍊錶的下乙個節點)
2、c語言中單向鍊錶的節點的資料定義如下:
typedef
struct
_strcnode
cnode;
3、單向鍊錶的推演示意圖
這是乙個帶有頭節點的單向鍊錶,如果頭結點(header)的next是空,說明鍊錶為空
4、單向鍊錶中我認為最重要的資料型別的定義和api的抽象,下面直接上**:
typedef
struct
__strnode
cnode;
typedef cnode clinklist;
// 建立鍊錶
clinklist *
createlinklist()
;// 向鍊錶的指定位置插入資料,返回插入位置;返回-1插入失敗
intinsertlinklistnode
(const clinklist *list, cnode *node,
int pos)
;// 獲取鍊錶指定位置的資料,返回空說明當前位置沒有資料
const cnode *
getlinklistnode
(const clinklist *list,
int pos)
;// 刪除鍊錶指定位置的資料
intdeletelinklistnode
(const clinklist *list,
int pos, cnode *
*node)
;// 獲取鍊錶的資料長度
intgetlinklistlenght
(const clinklist *list)
;//清空鍊錶
intclearlinklist
(const clinklist *list)
;// 銷毀鍊錶
void
destorylinklist
(clinklist *list)
;
以上是對c語言的單向鍊錶的資料定義和介面
5、c++的鍊錶的其實是乙個模板類
template
<
typename
t>
struct
node
;template
<
typename
t>
class
csignlelinklist
;// inline iterator(t *t):t(t){};
// inline iterator(const iterator &o):t(o.t){};
// inline iterator &operator++();
// inline bool operator!=(const iterator &o) const ;
// private:
// t *t;
// };
// // friend class iterator;
// // iterator begin();
// iterator end();
private
: node
*header;
int len;
};
上面其中我注釋掉的一部分,其實是我想實現迭代器(iterator);iterator的實現,比較重要的是要過載++、!=運算子
c/c++是實現的單向鍊錶的源**
C 實現簡單的單向鍊錶
為了練習一下對鍊錶的理解,嘗試手動造輪子,實現單向鍊錶的右新增,左新增和刪除的功能。pragma once include using namespace std struct node 節點 class list 獲取鍊錶大小 void print 列印鍊錶 void int a 右新增 void...
鍊錶簡單剖析
何為鍊錶?就是引用之前有先後順序,元素之間通過持有其他引用的指標來完成有序的資料結構。鍊錶分為單向鍊錶和雙向鍊錶。建立鍊錶 定義乙個鍊錶節點類,和乙個新增節點的方法。鍊錶物件 class node 將乙個節點加到鍊錶尾部 node end new node d node n this while n...
實現單向鍊錶
鍊錶類 public class link 增加節點 public void add node node else 輸出節點 public void print else 內部搜尋節點的方法 public boolean search string data 直到不存在下乙個節點結束搜尋 if th...