首页 > 其他分享 >学数据结构第一个是学链表?不,是它

学数据结构第一个是学链表?不,是它

时间:2023-02-22 21:56:32浏览次数:44  
标签:空表 第一个 元素 链表 前提 数据结构 线性表

大家好,我是五月。

前言

以前很多小白都来询问过关于数据结构的内容,问题基本都是想学链表,堆栈、队列、树这些该怎么下手。   一方面我表示赞许,另一方面又觉得他们对数据结构这个东西真是知之甚少。   我告诉他们,第一个要学的结构,不是链表,也不是堆栈队列,而是:   线性表!    

最基础的数据结构

线性表是一种最简单,最常用的数据结构,以至于最常听见的链表、循环链表,静态链表这些,也都是线性表衍生而来的。   1. 线性表的逻辑结构
由n(n>0)个数据类型相同的数据元素(又称结点)组成的有序序列。
2. 特点:
数据元素有序,且有限。
3. 构造
第一个数据元素(首结点)唯一且无前驱,最后一个数据元素唯一且无后驱(尾结点),其余数据元素只有一个直接前驱和一个直接后驱。
​                                                                                                                          线性表的大致模样 4. 优点
  • 灵活简单
  • 长度可增长/缩短
  • 对数据元素可访问、插入、删除等

九大基本操作

  • 初始化
前提:线性表还未被初始化过
结果:初始化为空表
  • 判断是否为空表
前提:线性表存在
结果:空表返回真,非空表返回假
  • 获取表长
前提:线性表存在
结果:空表返回0,非空表返回元素个数
  • 获取元素
前提:线性表存在
结果:返回第i个元素值
  • 插入元素
前提:线性表存在,元素合法
结果:成功插入数据元素,长度+1
  • 删除元素
前提:线性表是非空表
结果:成功删除数据元素,长度-1
  • 定位元素位置
前提:线性表存在,元素合法
结果:返回元素所在的位置序号
  • 销毁
前提:线性表存在
结果:成功销毁线性表
  • 清空
前提:线性表存在
结果:线性表被置成空表
以上九大操作,具体怎么样去实现,跟线性表采用哪种存储结构有关。

存储结构

没错,不同的存储结构,对应不同的实现方式。   存储结构有2种:
  • 顺序存储
线性表 + 顺序存储 = 顺序表
  • 链式存储
线性表 + 链式存储 = 链表
  先更到这儿吧,下次再继续。  

小结

  这次简单说了线性表是所有结构的起始点,以及它的一些特性,后面着重阐述顺序表和链表,还有九大操作的代码实现。   要是等不及了,数据结构与算法的完整学习资料,你们想要就拿去吧,仅供个人学习,祝你学习进步:   数据结构与算法完整版学习资料   希望以上内容对你有所帮助。   祝各位学习进步。   ​  

标签:空表,第一个,元素,链表,前提,数据结构,线性表
From: https://www.cnblogs.com/wuyue525/p/17146095.html

相关文章

  • Android Studio第一个程序的开发
    1:首先创建一个device,创建成功后运行,就会显示text的内容,为了修饰,打开code,编写代码修改手机app,遇到一个问题就是在xml编写android:background="#f00">无效,在TextView中修改t......
  • 链表巧用
    题目类型总结最近在阅读《算法竞赛进阶指南》这本书的链表这一节时,学会了链表在一类特定问题中的巧妙用法,遂有此文,也算是自己的一个学习笔记。考虑这样一类问题,一个长度......
  • 数据结构与算法(八):堆
    定义堆是一种特殊的树,首先,它是一个完全二叉树,其次它的每个节点的值都必须大于(或小于等于)其子节点的值。对于每个节点的值都大于等于子树中每个节点值的堆,我们叫做“大顶堆......
  • 《剑指Offer》-18-删除链表的节点
    这不就,真是删除链表节点的基操 ListNode*deleteNode(ListNode*head,intval){ //需要额外考虑的是删除头节点、尾节点的特殊情况 ListNode*virtual_head=ne......
  • 判断单链表是否成环
    快指针与慢指针在环中,快指针走两步,慢指针走一步,快慢指针一定会相遇。需要注意的是,快慢指针相遇的地方,不一定是环的入口。publicstaticbooleanisCircleByTwoPoint(Lis......
  • 02.07. 链表相交
    1//暴力法2ListNode*getIntersectionNode(ListNode*headA,ListNode*headB){3if(headA==nullptr||headB==nullptr)returnnullptr;4......
  • C#常见的数据结构
    数据结构:1.Set集合,纯粹的容器,无需存储,就是一个容器2.线型结构:在存储的时候,一对一存储3.树形结构:表达式目录树(二叉树)、菜单结构:一对多4.图形结构:扩扑图、网状结构(地图开发,用......
  • 力扣days02 链表
    力扣203.移除链表元素力扣707.设计链表已经覆盖了链表的常见操作,是练习链表操作非常好的一道题目;力扣206.反转链表再定义一个新的链表,实现链表元素的反转,是......
  • Java链表
    链表顺序表性质链表不同于顺序表,顺序表底层采用数组作为存储容器,需要分配一块连续且完整的内存空间进行使用,而链表则不需要,它通过一个指针来连接各个分散的结点,形成了......
  • Map数据结构详解
    MapObject本质上是键值对的集合(Hash结构),但Object只能将字符串当做键,这就给Object带来了很大的限制。letdata={}lets={name:'东方不败'}data[s]='西......