歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++中單鏈表的建立和操作

C++中單鏈表的建立和操作

日期:2017/3/1 9:52:47   编辑:Linux編程

准備數據

准備在鏈表操作中需要用到的變量及數據結構

示例代碼如下:

struct Data //數據結點類型
{
string key; //關鍵字
string name;
int age;
};
struct CLType //定義鏈表結構
{
Data nodeData;
Data *nextNode;
};

定義了鏈表數據元素的類型Data以及鏈表的數據結構CLType。結點的具體數據保存在一個結構Data中,而指針nextNode用來指向下一個結點。

我們可以認為,該鏈表是一個班級學生的記錄,其中key表示學號,name為學生的名字,age為年齡。

追加結點

追加結點就是在鏈表末尾增加一個結點。表尾結點的地址部分原來保存的是空地址NULL,此時需要將其設置為新增結點的地址(即原表尾結點指向新增結點),然後將新增節點的地址部分設置為空地址NULL,即新增結點為表尾。

由於一般情況下,鏈表只有一個頭指針head,要在末尾添加結點就需要從頭指針head開始逐個檢查,直到找到最後一個結點(即表尾)。

追加結點的操作步驟如下:

(1)首先分配內存地址,保存新增結點。

(2)從頭指針head開始逐個檢查,直到找到最後一個結點(即表尾)。

(3)將表尾結點的地址設置為新增結點的地址。

(4)將新增結點的地址部分設置為空地址NULL,即新增結點成為表尾。

示例代碼如下:

CLType * CLAddEnd(CLType *head,Data nodeData)
{
CLType *node,*htemp;
if(!(node = new CLType))
{
cout<<"分配內存失敗!"<<endl; //分配內存失敗
return NULL;
}
else
{
node->nodeData = nodeData; //保存結點數據
node->nextNode = NULL; //設置結點指針為空,即作為表尾
if(head == NULL) //當鏈表是空表的時候
{
head = node;
return head;
}
htemp = head;
while(htemp->nextNode != NULL) //查找鏈表的末尾
{
htemp = htemp->nextNode;
}
htemp->nextNode = node;
return head;
}

}

輸入參數head為鏈表頭指針,輸入參數nodeData為結點保存的數據。程序中,使用new關鍵字申請動態空間,如果內分配成功,node中將保存指向該內存區域的指針。

然後,將傳入的nodeData保存到申請的內存區域,並設置該結點指向下一結點的指針值為NULL。

Copyright © Linux教程網 All Rights Reserved