【原】手写链表(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 指向 下一个节点的下一个节点。

 

猜你喜欢

转载自www.cnblogs.com/winslam/p/10089004.html