线性表

线性表(Linear List)或称为有序表(Ordered List),是数学概念应用在计算机科学种一种相当基本的数据结构。

简单的说,线性表是n个元素的有限序列(n>=0),如26个英文字母的字母表:A,B,C,……,Z就是一个线性表。

  • 线性表定义

线性表数据可以是任何一种类型,不过对于同一线性表的每一个元素都必须属于同一类型。

有序列表的定义:

  • 有序列表可以是空集合,或者可写成(a1,a2,a3,……,an-1,an)。
  • 存在唯一的第一个元素a1与存在唯一的最后一个元素an。
  • 除了第一个元素a1外,每一个元素都有唯一的前驱(precessor),例如ai的前驱为ai-1。
  • 除了最后一个元素an外,每一个元素都有唯一的后继(successor),例如ai+1是i的后继者。
  • 线性表在计算机中的应用

线性表在计算机中的数据结构,基本上按照内存存储的方式,可分为两种:

    • 静态数据结构(static data structure)

静态数据结构或称为密集表(dense list),它是一种将有序列表的数据使用连续分配空间(contiguous allocation)来存储的。

例如数组类型就是一种典型的静态数据结构。

优点是设计简单,读取与修改列表中任一元素的时间都固定。缺点是删除或加入数据时,需要移动大量的数据。另外静态数据结构的内存分配时在编译时,就必须分配给相关的变量。因此数组在建立初期,必须事先声明最大可能的固定存储空间,容易造成内存的浪费。

    • 动态数据结构(dynamic data structure)

动态数据结构又称为链接列表(linked list,简称链表),它是一种将线性表的数据使用不连续存储空间来存储。

例如指针类型就是一种典型的动态数据结构。

优点是数据的插入或删除相当方便,不需要移动大量数据。另外动态数据结构的内存分配在执行是才发生,所以不需事先声明,能够充分节省内存。缺点是设计数据结构时较为麻烦,另外在查找数据时,也无法像静态数据一般可随机读取,必须顺序找到该数据为止。

问题:何谓指针变量与动态存储器分配?

指针变量(pointer variable)是指内含值为指定内存存储位置的一种数据类型的变量。而动态存储器分配(dynamic memory allocation)是指变量存储区分配的过程在运行(runtime)时,通过操作系统提供可用的内存空间。

线性表_第1张图片

线性表_第2张图片

你可能感兴趣的:(数据结构)