歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

准備數據

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

示例代碼如下:

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