以下的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 乙個鍊錶資料結構,...