数据结构1--线性表

1.线性表定义

是由零个或多个数据元素组成的有限序列。线性表中的元素在位置上是有序的,是一种线性关系,前后两个元素存在一一对应关系。

2.线性表的存储结构


(1)顺序表:线性表的顺序存储结构是指用一块地址连续的存储空间依次存储线性表中的数据元素。在顺序表中,逻辑上相邻的元素在物理上也是相邻的。

(2)链表:链表中逻辑上相邻的元素在物理上可以不相邻,相对顺序表来说更灵活。

顺序表

1.静态顺序表之数组

数组是线性表的顺序存储结构在程序语言中最直接的表现形式。缺点是无法动态改变集合的大小。

注:当数组元素为值类型时,数组对象存放的是值类型对象本身,而当元素为引用类型时,数组对象存放的则是对象的引用(指针)。

2.动态顺序表之 ArrayList与List<T>

ArrayList被称为动态数组,它的存储空间可以被动态的改变,同时还有添加,删除元素的功能,但它的类型不安全,List<T>使用泛型来进行类型的自定义,是安全的。

顺序表缺点:必须占用一整块事先分配好的存储空间,在插入和删除操作上需要移动大量元素,操作不方便。

单链表

1.单链表的节点结构


在链表中,每个节点由两部分组成:数据域和指针域。

2.单链表的整体结构


链表是由N个节点链接而成的线性表,如果其中每个节点只包含一个指针域那么就称为单链表,如果含有两个指针域就称为双链表

注:通过头指针可以唯一标识该链表,从头指针所指向的节点出发,沿着节点的链可以访问到每个节点。

双链表

1.双链表的节点结构


与单链表不同的是,双链表有两个指针域,一个指向前驱节点,另一个指向后继节点。

2.双链表的总体结构


双链表中,每个节点都有两个指针,指向前驱和后继,这样可以方便的找到某个节点的前驱节点和后继节点。

循环链表

将单链表中终端节点的指针端由空指针改为指向头节点,就使整个单链表形成一个环,这种头尾相接的单链表称为单链表循环,简称循环链表。

1.循环链表节点结构


循环链表和单链表的主要差异在于循环的判断条件上,原来是判断p.next是否为空,现在则是p.next不等于头节点,则循环未结束。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线性表是一种常见的数据结构,它表示具有相同数据类型的一组元素的有序序列。线性表的元素之间存在一种顺序关系,每个元素都有一个前驱和一个后继(除了第一个元素没有前驱,最后一个元素没有后继)。线性表可以用顺序存储结构或链式存储结构实现。 在顺序存储结构线性表的元素按照顺序存储在连续的内存空间,可以通过元素的下标来访问和操作元素。插入或删除元素时,需要移动其他元素,因此操作的时间复杂度较高。 链式存储结构线性表的每个元素都包含一个数据域和一个指针域,指针指向下一个元素。通过指针的链接,元素可以按照任意顺序存储在内存,插入和删除操作只需要改变指针的指向,因此时间复杂度较低。 线性表常见的操作包括插入、删除、查找、获取长度等。其插入和删除操作需要注意保持线性表的顺序关系。 常见的线性表有数组、链表、栈和队列。数组是最简单的线性表,通过下标可以直接访问元素;链表是动态存储结构,插入和删除操作方便,但访问元素需要遍历链表;栈是一种特殊的线性表,只允许在表的一端进行插入和删除操作;队列也是一种特殊的线性表,只允许在表的一端进行插入操作,在另一端进行删除操作。这些数据结构在实际应用都有各自的应用场景和优缺点。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值