zoukankan      html  css  js  c++  java
  • 【转载】每天5分钟用C#学习数据结构(1)线性表基础

    线性表基础



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

    1. 线性表基本定义

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

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

    2. 线性表的存储结构

    顺序表

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

    链表

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

    3. 小结

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

    [转载:每天5分钟用C#学习数据结构(1)线性表基础](Edison Zhou)

  • 相关阅读:
    HDU 1213 How Many Tables 并查集 寻找不同集合的个数
    哈哈哈哈哈
    P2251 质量检测(ST表)
    poj3264Balanced Lineup(倍增ST表)
    bzoj1088扫雷(搜索)
    P2258 子矩阵(dp)
    codevs1369 xth 砍树(线段树)
    5.3QBXT模拟赛
    codevs1690 开关灯(线段树)
    zhw大神线段树姿势
  • 原文地址:https://www.cnblogs.com/wuzhixiong/p/12981465.html
Copyright © 2011-2022 走看看