线性表

线性表

n个数据元素的有限序列,最常用的是链式表达,通常称为线式链表或者链表。在链表中存储的数据元素也叫结点,一个结点存储的就是一条数据记录。每个结点的结构包括两个部分:数据和指向下一个结点的指针。
单向链表:
在这里插入图片描述
双向链表:
在这里插入图片描述
循环链表:
在这里插入图片描述
双向循环链表:
在这里插入图片描述
插入删除比较高效,查询需要挨个遍历比较,但是一般插入删除伴随着查询。线性表真正的价值在于,它对数据的存储方式是按照顺序的存储的。如果元素个数不确定,且经常进行新增删除,链表合适。如果数据元素大小确定,删除插入操作不多,那么数组可能更合适。

案例:
1、反转

栈:一种特殊的线性表,结点数据满足后进先出。
在这里插入图片描述
与链表、数组相比,站的操作更受限制,为什么要使用?数组和链表暴露了过多可操作的接口,当数据量大时,可能会带来风险。典型场景:浏览器页面的前进后退、括号匹配。
表头通常称为栈底(bottom),表尾通常称为栈顶(top)。

顺序栈&链式栈

顺序栈

数组实现。

在这里插入图片描述

链栈

链表实现。
在这里插入图片描述

队列

特殊的线性表,元素先进先出

顺序队列

数组实现。
在这里插入图片描述
在这里插入图片描述
删除之后如何移动数据?循环队列。
在这里插入图片描述
这时rear重新指向0位置,当队列为空时,front 指针= rear 指针,当队列满时,front 指针= rear 指针,通常会加一个标志变量来区别。

链式队列

链表实现。
在这里插入图片描述
为什么使用带头结点的单链表?防止front和rear在删除最后一个元素之后变成也指针。

典型场景:约瑟夫环问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值