c++中單鏈表的使用


線性表可分為順序存儲結構和鏈式存儲結構

順序存儲結構的創建,其實就是一個數組的初始化,即聲明一個類型和大小的數組並賦值的過程。而單鏈表和順序存儲結構就不一樣,它的每個數據的存儲位置不需要像數組那樣集中,它可以很散,是一種動態結構。對於每個鏈表來說,它所占用的空間大小和位置並不需要預先分配划定,可以根據系統的情況和實際的需求即時生成。所以,創建單鏈表的過程就是一個動態生成鏈表的過程。即從“空表”的初始狀態起,一次建立各元素結點,並逐個插入鏈表。

單鏈表的整表創建

單鏈表的整表創建主要有兩種方法,即頭插法和尾插法,下面分別對這兩種方法進行介紹

鏈表類

首先在類中聲明數據成員

 1 memberCar *next 

1.頭插法

memberCar *head=NULL;  //此處為類外,函數上面,通常建立一個空的表頭,表頭不存數據,便於釋放
void
create(memberCar *&head) //頭插法,創建節點 { memberCar *p, *s = head;//head為頭節點,s為p前面的一個節點,p為要插入的節點

p = new memberCar(); p->next = NULL;
/*
if (head == NULL) //不建議這種寫法(不利於釋放),頭節點為空的情況 { head = p; //p就是頭節點,此時s也為頭節點 s = p; return; }*/ //插入 p->next = s->next; s->next = p; }
 

 

2.尾插法

//定義為全局變量,創建鏈表表頭和尾節點

memberCar *head=NULL;
memberCar *pend = NULL;

void create() //尾插法,創建節點
{


memberCar *p ;

p = new memberCar();

p->next = NULL;

//判斷,如果頭節點為空,由於沒有數據成員next,則不能指向下一節點

if (head==NULL)
{
head= p;
pend = p;
}
else
{
pend->next = p;//原來的尾指針指向新建的p
pend = p;//然后尾指針的位置再等於新建指針的位置
}

}

 

然后就是對鏈表執行操作(如果是對特點的節點操作,那么就可以用if條件語句遍歷)

//此處為遍歷鏈表,注意對鏈表的操作,包括調用函數,修改數據成員都需要遍歷
void show(memberCar *head)  //傳入鏈表頭指針
{
    memberCar *showname = head;  
    while (showname)
    {
        showname->print();  //鏈表調用
        showname = showname->next;
    }
}

最后就是刪除鏈表,思路:遍歷,先定義一個指針,指向頭節點。然后判斷頭節點的下一節點是否為空,不為空則讓指針指向頭節點的下一節點,然后刪了頭節點,然后頭節點再等於指針所在的節點。循環,以此類推,直到全部刪掉。最后定義的指針為NULL。大功告成。

1         memberCar *tou;
2     tou = head;
3     while(tou->next != NULL)
4     {
5         tou = tou->next;
6         delete head;
7         head = tou;
8     }
9     delete tou;    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM