單鏈表:
包含乙個未知型別的資料以及乙個指向下乙個結點的指標
1.初始化單鏈表
建立頭結點,令他的下一結點為空
2.插入元素
遍歷該鍊錶直到到達插入點,建立新結點,載入資料,插入鍊錶
3.輸出單鏈表
遍歷整個鍊錶輸出每個結點的資料
4.輸出單鏈表長度
5.判斷單鏈表是否為空
頭結點的指標是否為空
6.輸出單鏈表第i個元素
7.輸出元素a的位置
8.釋放單鏈表
兩個指標乙個指向當前結點,乙個下一結點,邊delete邊往後移,直到指標為空
9.刪除單鏈表第i個元素
先找到第i-1個元素,然後看第i個元素是否為空,為空直接返回0,不為空將第i個結點的位址賦給另外乙個指標,由該指標操作解除連線,刪除資料。
#include
#include
#include
#include
typedef
char elemtype;
typedef
struct lnode
linklist;
//單鏈表
void
initlist
(linklist *
&l);
//建立頭結點
void
destroylist
(linklist *
&l);
//銷毀鍊錶
intlistempty
(linklist *l)
;//判斷鍊錶是否為空
intlistlenth
(linklist *l)
;//返回鍊錶的長度
void
displist
(linklist * l)
;//輸出鍊錶
intgetelem
(linklist * l, elemtype &e,
int i)
;//獲取單鏈表中第i個元素
intlocateelem
(linklist * l, elemtype e)
;//在單鏈表中查詢元素e
intlistinsert
(linklist *
&l,int i, elemtype e)
;//在單鏈表第i個位置插入元素e
intlistdelete
(linklist *
&l, elemtype e,
int i)
;//在單鏈表l中刪除第i個元素
using
namespace std;
intmain()
void
initlist
(linklist *
& l)
void
destroylist
(linklist *
& l)
delete
p;}int
listempty
(linklist * l)
intlistlenth
(linklist * l)
return i;
}void
displist
(linklist * l)
cout <<
"\n";}
intgetelem
(linklist * l, elemtype &e,
int i)
if(p ==
nullptr
)return0;
else
}int
locateelem
(linklist * l, elemtype e)
if(p ==
nullptr
)return0;
else
}int
listinsert
(linklist *
&l,int i, elemtype e)
if(p ==
nullptr
)return0;
else
}int
listdelete
(linklist *
& l, elemtype e,
int i)
if(p ==
nullptr
)return0;
else
}
演算法學習06 單鏈表
乙個單向鍊錶基本由兩個元素組成,即資料字段和指標,而指標通常指向下乙個節點記憶體所在的位址。最後乙個節點沒有其他節點可以連線,因此指標的值為null。建立與遍歷 以動態分配產生鍊錶節點的方式,可以先行定義乙個類資料型別,要有乙個資料字段,接著在類中定義乙個指標變數,其資料型別與此類相同,作用是指向下...
演算法學習日記 單鏈表(1)
鍊錶是常用的線性資料結構。鍊錶的結構就好像是一列火車,每個車廂都代表乙個結點,結點與結點依次相連。單鏈表是所有鍊錶型別中最直接的,單鏈表中每個節點都存了指向下乙個節點的指標。單鏈表就像一列只能從車頭走到車尾的列車。單鏈表vs雙鏈表 雙鏈錶比單鏈表多乙個指向前乙個元素的指標。雙鏈表可以來回的遍歷整個鍊...
左神演算法學習日記 單鏈表(一)
最近在找實習工作,做個左神演算法的學習日記,方便以後鄙視自己。題一 判斷乙個鍊錶是否為回文結構 題目 給定乙個鍊錶的頭節點head,請判斷該鍊錶是否為回文結構。例如 1 2 1,返回true。1 2 2 1,返回true。15 6 15,返回true。1 2 3,返回false。高階 如果鍊錶長度為...