C C 單向鍊錶的簡單剖析和實現

2021-09-09 06:51:15 字數 2030 閱讀 8466

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...