C++实现双向链表
2016-06-05 10:13
453 查看
List.h
[code=cpp;toolbar:false">//////////////////////////////////////////////////////////////////////////////////////
/////// 这里建立两个类,一个节点类和一个List类,与单链表不同的是双向链表的节点要多一
////// 个前驱指针,相应的,双向链表函数实现要与单链表实现有所差异
typedef int DataType;
//struct LinkNode //节点类(复合形态)
//{
// friend class SList;
//将SList设为友元,便于SList类可以访问节点类的私有成员
//public:
// LinkNode(const DataType x);
//private:
// DataType _data; //节点的数据
// LinkNode* _next; //指向该节点的下一个节点
// LinkNode* _prev; //指向该节点的前一个节点
//};
//直接用struct定义LinkNode类,因为struct的成员默认为公有数据成员,所以可直接访问
struct LinkNode //节点类(建议写法)
{
LinkNode(const DataType x);
DataType _data; //节点的数据
LinkNode* _next; //后继指针
LinkNode* _prev; //前驱指针
};
class List //链表类
{
public:
List(); //构造函数
List(const List& s); //拷贝构造
List &operator=(List& s); //赋值运算符的重载
~List();
public:
void Reverse();
void Swap(List& s);
void PrintSList(); //打印链表
void PushBack(const DataType& x); //在尾部插入一个节点
void Clear(); //链表置空
void PopBack();
void PushFront(DataType x); //头插
void PopFront(); //删除首节点
void Insert(LinkNode* pos, DataType x);//固定位置插入一个节点
void Erase(LinkNode* pos); //删除某一节点
LinkNode* Find(DataType x); //查找节点并返回这个节点的地址
int Amount(); //计算链表节点的数目
void Remove(DataType x); //查找某节点并删除
private:
LinkNode* _head; //指向头结点
LinkNode* _tail; //指向尾节点
};
相关文章推荐
- C++实现单链表
- C++实现动态顺序表
- C++实现 复数类
- C++实现日期类
- C++ Assert()断言机制原理以及使用
- C和C++语言中基本的数据类型
- C语言 实现一个函数,判断一个数是不是素数
- C语言 实现一个函数判断year是不是润年
- C语言 使用函数实现两个数的交换
- C语言输出数组的三种方法
- C语言 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?打印出来?
- C语言 模拟三次密码输入
- C语言 整人程序“我是猪”
- vs的一个调试的程序
- POJ2446 Chessboard(二分图)
- MFC如何清理和删除一些消息映射函数
- C++第7次实验-数组素数排序
- c++标准库—命名空间std和头文件的演变 (各个头文件作用解析解释,惊喜!!!)
- c++学习笔记(小技巧)
- C++运算符优先级