C++链表(小白请进)

链表

参考资料
C++链表及其创建
小灰的算法之旅(是一个纸质书)

基础概念

定义:

链表是由一系列节点组成的,每一个节点都是一个数据结构

结构

链表是由一个个节点组成的,那么什么是节点,节点是由什么组成的呢?
链表是由要保存的数据成员和一个指针组成的:

  • 链表中的每一个节点都包含一个或多个保存数据的成员
  • 链表还包含一个后继指针指向链表中的下一个节点

如图这是链表的结构:

Alt

链表的开始和结束

开始

非空链表的第一个结点称为链表的头,要访问链表中的结点,需要有一个指向链表头的指针。从链表头开始,可以按照存储在每一个节点中的后继指针访问链表中的其余结点。

结束

最后一个结点中的后继指针被设置为nullptr以表示链表的结束

图片展示

Alt

注意,图 2 中绘制的链表结点彼此非常接近,排列整齐。实际上,链表结点可能散布在内存的各个部分。

链表的C++表示

为了在C++中表示链表,需要有一个表示链表中单个结点的数据类型。需要有一个指向另一个相同类型结点的指针。

//链表的创建
struct ListNode
{
double value;//用于储存信息
ListNode *next;//指向下一个指针,具有和自己相同的类型
}

ListNode结构有一个有趣的属性,它包含一个指向相同类型数据结构的指针,因此可以说是一个包含对自身引用的类型。像这样的类型称为自引用数据类型或自引用数据结构

//构造函数
	ListNode(string str1, ListNode* next1 = nullptr) {
		str = str1;
		next = next1;
	}

浅浅的分析一下,在创建一个链表的节点时,此时他的值等于传来的参数,他的后指针指向第二个形参

我将写一段代码实现链表的创建输入和链表的输出

int main() {

	ListNode* list = nullptr;
	int n = 0;
	while (n < 3)
	{
		string str;
		cin >> str;
		list = new  ListNode(str, list);
		n++;
	}
	ListNode* pre = list;
	while (pre != nullptr) {
		//用while来输入,判断的依据是指针结束的标志 nullptr
		cout << pre->str << " ";
		//后指针指向的自身类型
		pre = pre->next;
	}

}

小结:如果把数组看做正规军那么链表就是地下党,对于链表的话可以储存问置是随机的,使用见缝插针的方式,随机的分布在不同的位置上,通过后指针联系在一起

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值