update 数据还原到5分钟前_每天5分钟用C#学习数据结构(1)线性表基础

eaba50bf4e6c66d037d232bfb3f46ff8.png

【基础知识】| 作者 / Edison Zhou

这是恰童鞋骚年的第183篇原创文章


从今天开始,我们来开始温习计算机基础知识:数据结构,而且使用我们最熟悉的C#语言来学习。预读每一篇的阅读时间在5分钟左右,希望在你的碎片时间里对你有所帮助!

第一篇会介绍线性表,线性表是最简单也是在编程当中使用最多的一种数据结构。例如,英文字母表(A,B,C,D...,Z)就是一个线性表,表中的每一个英文字母都是一个数据元素;又如,成绩单也是一个线性表,表中的每一行是一个数据元素,每个数据元素又由学号、姓名、成绩等数据项组成。顺序表和链表作为线性表的两种重要的存在形式,它们是堆栈、队列、树、图等数据结构的实现基础。

1线性表的基本定义

e7918fb08cb7c8b5822f790941f47980.png

线性表:零个或多个数据元素的有限序列。线性表中的元素在位置上是有序的,类似于储户去银行排队取钱,人们依次排着队,排在前面的先取,排在后面的则后取。这种位置上的有序性就是一种线性关系。由此可以看出:线性表的前后两个元素存在一一对应关系。

需要注意的是,这种前后关系是逻辑意义上而非物理意义上的,就好比如果银行做了改革,使用排队机进行排队,所有储户分散在银行的各个角落,他们取钱的顺序是根据储户从排队机获取的纸条上的号码来决定的。

021d70dc7f89cd99be82ddd8fcb0711e.png

2线性表的存储结构

1bbfcfed70f418faadbc8d06e89000fd.png

顺序表

线性表的顺序存储结构是指【用一块地址连续的存储空间依次存储线性表中的数据元素】。就好像我们刚刚提到的改革之前的银行,需要在业务窗口前排队等候办理。由此可以看出:在顺序表中,逻辑上相邻的元素在物理上也是相邻的。

68e80d67b8bfb3f6951eea805c349989.png

链表

相比顺序表需要预先占用一块事先分配好的存储空间,链表就灵活一些。链表中逻辑上相邻的元素在物理上可以不相邻。这就好像改革之后的银行,人们办理业务的顺序是由手上的小纸条的号码来决定。在某些特定场合,链表的使用优先于顺序表。

7273fac1d66e52c0b321e1d75339a59d.png

3小结

本文介绍了线性表的基本定义及两种不同的存储结构,或许你会觉得意犹未尽。别着急,本系列的目的就是短小精干,尽量在5分钟的碎片时间内输出一点知识就算成功了。下一篇我会介绍线性表中的顺序表在.NET中的具体实现方式:数组、ArrayList与List,然后会从源码层面看看ArrayList与List的实现要点!

4参考资料

程杰,《大话数据结构》

陈广,《数据结构(C#语言描述)》

段恩泽,《数据结构(C#语言版)》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值