LinkList鍊錶操作

2021-05-01 10:04:02 字數 2588 閱讀 4974

以下的c++類linklist實現了線性鍊錶的一般操作。可以直接在其他的程式中直接建立它的物件,其中線性表中的資料在此為整型,具體應用的時候可以適當的修改,並可以在此基礎上繼續封裝特定的功能。

標頭檔案:linklist.h

typedef struct lnode lnode, *plinklist;

class linklist ;

cpp檔案:linklist.cpp

#include

#include "linklist.h"

linklist::linklist()

linklist::~linklist()

}//初始化,分配乙個頭節點。

bool linklist::initlist()

m_plist->next = null;

return true;

}//銷毀鍊錶。

bool linklist::destroylist()

delete m_plist;

return true;

}//判斷鍊錶是否為空。若為空,返回true,否則返回false。

bool linklist::isempty()

return false;

}//返回鍊錶的中當前節點數。

int linklist::getlength()

//將鍊錶清空,釋放當前所有節點。

bool linklist::clearlist()

lnode *ptemp = null;

while (m_plist->next != null)

m_listlength = 0;

return true;

}//將position指定的節點內的資料設定為newdata。

//第乙個有效節點的position為1。

bool linklist::setnodedata(int position, int newdata)

ptemp->data = newdata;

return true;

}//得到指定位置節點的資料。

//節點索引從1到listlength。

bool linklist::getnodedata(int position, int &data)

data = ptemp->data;

return true;

}//在鍊錶中插入乙個節點。

//插入的位置由beforewhich指定,新節點插入在beforewhich之前。

//beforewhich的取值在1到listlength+1之間。

bool linklist::insertnode(int beforewhich, int data)

if (!(getnode(beforewhich - 1, &ptemp)))

lnode *newnode = new lnode;

newnode->data = data;

newnode->next = ptemp->next;

ptemp->next = newnode;

m_listlength++;

return true;

}//刪除乙個指定的節點。

//節點位置由position指定。

//positon的值從1到listlength。

//若煉表為空或指定的節點不存在則返回false。

bool linklist::deletenode(int position)

lnode *ptemp = null;

if (!(getnode(position - 1, &ptemp)))

lnode *pdel = null;

pdel = ptemp->next;

ptemp->next = pdel->next;

delete pdel;

m_listlength--;

return true;

}//得到指定位置節點的指標。

bool linklist::getnode(int position, lnode **node)

if (curpos != position)

*node = ptemp;

return true;

}//定位與指定資料相等的資料節點。

//如果在當前鍊錶中已經存在該資料則返回該資料節點的索引號。

//若不存在這樣的節點則返回0。

//節點索引從0開始到listlength。

int linklist::locateelem(int elem)

if (ptemp == null)

return curindex;}/*

int main()

if (l.setnodedata(3, 50)) else

for (i = 1; i <= l.getlength(); i++)

if (l.deletenode(4)) else

for (i = 1; i <= l.getlength(); i++)

cout << l.locateelem(50) << endl;

return 0;}*/

鍊錶(LinkList) 單鏈表

一 鍊錶的基本概念 鍊錶是一種物理上不連續 非順序的儲存結構,資料元素之間通過指標關聯在一起。鍊錶的特點 1 空間開銷大 物理空間不連續 2 可以動態新增新的節點 3 查詢元素只能按順序查詢 二 單向鍊錶圖示 節點 class node 鍊錶 class linklist linklist void...

11 1 LinkList 鍊錶

底層是由節點 靜態內部類 來進行儲存元素的,底層記憶體不連續,不需要擴容增刪元素效率較高,查詢元素效率較低 執行緒不安全 linkedlist類中有乙個內部私有類node,這個類就代表雙端鍊錶的節點node。這個類有三個屬性,分別是前驅節點,本節點的值,後繼結點。原始碼中的實現是這樣的。privat...

用Python實現鍊錶Linklist

在leetcode上面試著用python解題,但是遇到鍊錶 二叉樹什麼的,python就用不溜。在網上看了一些資料。完整的實現過程如下 class node next none data none def init self,nodedata self.data nodedata 乙個鍊錶資料結構,...