1. 程式人生 > >【原】手寫連結串列(C++)

【原】手寫連結串列(C++)

  • 1、連結串列基本概念以及注意事項
  • 2、列印連結串列
  • 3、刪除連結串列節點
  • 4、連結串列中倒數第k個節點
  • 5、反轉連結串列
  • 6、合併兩個排序的連結串列
  • 7、兩個連結串列當中的第一個公共節點

【檢視之前筆記】

 

在做上面幾道題之前,我們先給出一個基本連結串列。

總程式碼,順便解釋建構函式、解構函式為什麼這樣寫

2、列印連結串列

 1 void List::print()
 2 {
 3     if (size_ == 0)
 4     {
 5         cout << "size = 0" << endl;
6 return; 7 } 8 //遍歷 9 Node* p_curr = head_->next_;//【注意這裡next】 10 while (p_curr != nullptr) 11 { 12 cout << p_curr->data_ << " "; 13 p_curr = p_curr->next_; 14 } 15 cout << endl; 16 }

3、刪除連結串列節點

 

 1 //功能:刪除索引位置為pos的節點
2 void List::remove(int pos) 3 { 4 if (pos < 0 || pos > size_) 5 { 6 return; 7 } 8 Node* p_curr = head_; 9 for (int i = 0; i < pos; i++)// 3 10 { 11 p_curr = p_curr->next_; 12 } 13 p_curr->next_ = p_curr->next_->next_; 14 size_--;
15 }

 

思想就是找到要刪除的Node的前一個節點,讓前一個節點的指標指向Node的下一個節點就行了。

例如:pos = 3的時候,for迴圈執行完畢,p_curr表示索引值為2的節點地址,接著我們讓p_curr->next 指向 下一個節點的下一個節點。