C 資料結構與演算法之單向鍊錶

2021-09-29 23:25:08 字數 1801 閱讀 2602

如果乙個節點將指向另乙個節點的指標作為資料成員,那麼多個這樣的節點可以連線起來,只用乙個變數就能夠訪問整個節點序列。這樣的節點序列就是最常用的鍊錶實現方法。 鍊錶是一種由節點組成的資料結構,每個節點都包含某些資訊以及指向鍊錶中另乙個節點的指標。如果序列中的節點只包含指向後繼節點的鏈結,該鍊錶就成為單向鍊錶。

中另乙個節點的指標。如果序列中的節點只包含指向後繼節點的鏈結,該鍊錶就成為單向鍊錶。

下圖是除錯的截圖,可以看出,鍊錶的儲存就相當於乙個鏈,通過next串聯起來 

文中涉及**

intsllist.h

#ifndef structure_intsllist_h

#define structure_intsllist_h

class intsllnode

intsllnode(int el, intsllnode *ptr = 0)

int info;

intsllnode *next;

};class intsllist

~intsllist();

int isempty()

void addtohead(int);

void addtotail(int);

int deletefromhead();

int deletefromtail();

void deletenode(int);

bool isinlist(int) const;

private:

intsllnode *head, *tail;

};#endif //structure_intsllist_h

intsllist.cpp

#include #include "intsllist.h"

intsllist::~intsllist()

}void intsllist::addtohead(int el)

void intsllist::addtotail(int el) else

head = tail = new intsllnode(el);

}int intsllist::deletefromhead() else

delete tmp;

return el;

}int intsllist::deletefromtail() else

return el;

}void intsllist::deletenode(int el) else if (el == head->info) else };}

}bool intsllist::isinlist(int el) const

力扣有個單鏈表的習題可以練習下:

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。

如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。

您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

示例:輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 輸出:7 -> 0 -> 8 原因:342 + 465 = 807

資料結構之單向鍊錶

結構體 指標 更強大的資料結構 分類 1 頭指標式鍊錶 不實用很麻煩 2 頭結點式鍊錶 常用 節點 typedef int data 常用操作 1建立 2摧毀3增加 4刪除5查詢 6修改7逆序 ifndef linklist h define linklist h typedef enum bool...

資料結構與演算法 C語言 單向鍊錶1

將儲存資料元素資訊的域稱為資料域,將儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱做指標或鏈。這兩部分資訊組成資料元素稱為結點。1 頭指標是指向鍊錶第乙個結點的指標。注,並不一定是頭結點的指標。無論鍊錶是否為空,頭指標均不為空。2 頭結點,為了操作的統一和方便而設立的,放在第乙個元素結點之前,...

資料結構之單向迴圈鍊錶

基於單向鍊錶 將最後乙個節點 指向 頭結點 ifndef cirlinklist h define cirlinklist h typedef enum bool typedef int data typedef struct node node typedef struct list list 建...