双链表--迭代器、重载方法、使用类重写链表方法

本文介绍了如何使用C++实现双链表,包括节点类的设计,迭代器类的重载方法如后置++,前置++,等,并详细阐述了链表类的实现,包括插入、删除、翻转、排序、合并等操作,以及主函数的测试用例。" 111352610,1005481,X11窗口信息获取:XQueryTree、XGetWindowAttributes和XGetGeometry,"['Linux', 'X11', '窗口管理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

双链表–迭代器、重载方法、使用类重写链表方法

1: 双向链表的节点类

  • 1:数据成员:数据域/前驱指针/后继指针
  • 2:四大默认成员函数:构造/析构/拷贝构造/赋值
  • 3:成员函数
  • 4:新增功能
Node.h
class Node
{
   
public :
	friend class List;//友元类
	friend class Iterator;
	Node() :pFront(nullptr), pNext(nullptr)
	{
   
	}
	Node(int val, Node* pFront=nullptr, Node* pNext=nullptr);//缺省可以写在声明中,不要写在定义中
	~Node();
private:
	int val;
	Node* pFront;//前驱:指向前一个节点
	Node* pNext;//后驱:指向后一个节点
};
Node.cpp
#include "Node.h"

Node::Node(int val, Node* pFront, Node* pNext):val(val),pFront(pFront),pNext(pNext)
{
   
}
Node::~Node()
{
   
	pFront = nullptr;
	pNext = nullptr;
}

2: 双想链表迭代器类–重载

  • 迭代器指向的节点: Node* pNode;
  • 构造函数:Iterator(Node* pNode);
  • 友元类:friend class List;
2.1构造函数
Iterator::Iterator(Node* pNode):pNode(pNode)
{
   

}
2.2重载后置++
Iterator Iterator::operator++(int)
{
   
	Iterator temp = *this;
	pNode = pNode->pNext;
	return temp;
}
2.3重载前置++
Iterator& Iterator::operator++() 
{
   
	this->pNode = pNode->pNext;
	return *this;
}
2.4重载后置–
Iterator Iterator::operator--(int)
{
   
	Iterator it = *this;
	this->pNode = pNode->pFront;
	return it;
}
2.5重载前置–
Iterator& Iterator::operator--()
{
   
	this->pNode = pNode->pFront;
	return *
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值