c++数据结构与算法(10)——链表(使用class实现)

目录

链表的定义

定义模板节点类 

定义链表类

 解释:List,Node,node->next,下一个节点(重点在node->next与下一个节点的区别)

链表的插入操作(头插法)

代码分析

链表的删除操作 

代码分析

 反转链表 

代码分析

两个链表的连接

 代码分析

完整代码(含迭代器类,本文未说明)

LinkList.h 


 

 链表的定义

链表是一种物理存储单元上非连续、非顺序的存储结构数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 (百度百科:https://baike.baidu.com/item/%E9%93%BE%E8%A1%A8/9794473?fr=aladdin

定义模板节点类 

template <class T> 
class Node{
	friend class List<T>;//为了使链表类可以访问节点的私有成员变量所以将其设为友元类
	private:
		T data;//数据域 
		Node* next;//指针域 
		Node(T);//构造函数 
};

定义链表类

//链表可以看作是一个头节点指向的空间,就像数组的数组名一样 
template <class T>
class List{
	private:
		Node<T>* first;//头节点 
	public:
		List(){
			first = 0;//头节点为空 
		}
		void Insert(T);//插入数据 
		void Show();//显示数据 
		void Delete(T);//删除数据 
		void Invert();//反转链表 
		void Concatenate(List<T> list);//将两个链表连接 
};

 解释:List,Node,node->next,下一个节点(重点在node->next与下一个节点的区别)

 List:即链表,它由一个头节点以及一串不连续的空间组成,这些空间就是一个一个节点;

图示:

Node:即节点,它由数据域和指针域组成,数据域用来存储数据,指针域用来存储下一节点的地址;

图示:

 node->next:即指针域所存储的地址,他对应着下一个节点的地址,所以我们也称之为指向下一个节点,是一个虚化的地址;

图示:

 下一个节点:即下一个节点所在的空间,是一个实体的存储空间;

图示:

  • 15
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值