数据结构(二)

来源:互联网 发布:网络教育毕业证有用吗 编辑:程序博客网 时间:2024/06/07 08:19

2 线性表

2.1 线性表的定义

一种有序元素的集合,目的在于表示列表中的任意两相邻元素之间的关系。其中ai1称为ai的先行元素,aiai1的后继元素。简单的线表我们可以写成(a1,a2,a3,...,an1,an)

2.1.1 线性表的用途

在内存中静态数据结构应用有数组或字符串结构等,特性是使用连续的存储空间来存储,因此在编译时就必须把内存分配给相关的变量,容易造成内存的浪费。
链表结构在C/C++中,多半是以指针变量类型来实现线性表的数据结构。特点是链表节点的内存分配是在执行时才会发生,无需事先声明,能够充分节省内存,这种分配方式称为“动态内存分配”。

2.2 数组

数组在程序设计语言中,可看作是具有相同名称与相同数据类型的变量的集合,并且在内存中战友一块连续的内存空间。要存取数组中的数据时,则需要使用下标(索引)来定位数据在数组中的位置。
数组通常必须包含该下列五种属性:

  1. 起始地址:表示数组名所在内存中的起始地址。
  2. 维数:代表此数组为几维数组。
  3. 下标的上下限:元素在此数组中,内存所存储位置的最大值与最小值。
  4. 数组元素的个数:是下标上限与下标下限的差。
  5. 数组类型:声明此数组的类型,它决定数组元素在内存所占空间的大小。

在C语言中一位数组的语法声明

数据类型 数据名[数组长度]数据类型:表示该数组存放的数据类型,可以是基本的数据类型(int,float,char等),或扩展的数据类型(struct等)。变量的个数:表示数组可存放的数据个数,为一个正整数的常数,且数组的下标值是从0开始。若是只有中括号,即没有指定长数值,则表示定义的是不定长度的数组。例:int Score[5]

在C语言中二维数组的语法声明

数据类型 二维数组名 [行大小][列大小]例:int Score[5][5]

在C语言中三维数组的语法声明

数据类型 数组名[元素个数][元素个数][元素个数]例:float Score[5][5][5]

结构数组
结构与数组的作用同样是用来建立数据集合,它以C现有的数据类型作为基础,允许用户建立自定义数据类型,又称为派生数据类型。简单来说,就是将一组相关的却拥有不同数据类型的数据组合在一起成为一种新的数据类型。结构类型必须具有结构名称与结构项目,而且必须使用关键词struct来创建,一个结构的基本声明如下所示:

struct 结构名称{    数据类型 结构成员1;    数据类型 结构成员2;    ......

在结构定义中可以使用基本的变量、数组、指针,甚至是其他结构成员等。
定义结构之后,可以创建结构对象,声明语法如下:

struct 结构名称 对象名称1,对象名称2;

在存取结构成员时,可以通过“.”运算符来进行操作:

对象名称1.项目成员名称

字符数组
在C语言中,并没有string类型,必须用字符串数组来表示。‘a’表示字符,“a”则表示字符串常数,字符串声明的最重要特点是必须使用空字符(’\0’)来代表每一个字符串的结束。
字符串的声明方式:

方式1:char 字符串变量[字符串长度]="初始字符串";方式2:char 字符串变量[字符串长度]={'字符1','字符2',......,'字符n','\0'};

字符串数组
由字符串组成的一位数组,声明方式如下:

char 字符串数组名[字符串数][字符数];

指针数组
由指针组成的数组,数组中每一个指针只想其他变量的地址值。声明格式如下:

数据类型 *数组名[元素名称];例:int *p[3];

参考文献:
胡昭民著《图解数据结构》第二版

1 0