【查看之前笔记】
在做上面几道题之前,我们先给出一个基本链表。
总代码,顺便解释构造函数、析构函数为什么这样写
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 指向 下一个节点的下一个节点。
原文:https://www.cnblogs.com/winslam/p/10089004.html