I. 表的含义
表是用于储存大量信息的一种储存结构,其结构可类比为现实生活中的火车结构,信息储存在这些车厢(结点)里,再通过连接轴(数据之间的关系)将车厢连接起来。
II. 表结构的构成
如表的含义所示,表一般包括数据结点以及数据连接关系构成。
III. 数据结点
数据结点是用来储存数据的地方,相当于一节火车车厢,里面可以装下很多的数据。
IV. 数据连接关系
建立好数据结点后,如果不用绳索等工具将这些结点按照某种顺序连接起来的话,这些结点就是飘散的,计算机根本就不能全部有序的扫描到这些数据结点,这个时候就需要数据连接关系这个绳索来进行串联。
V .表的分类
常用的表的储存结构有两种,即顺序表和链表,顺序表顾名思义,是指数据在内存空间上的位置是连续的而且大小固定,而链表是指在内存空间上是不连续的,但它的大小是可以调整的。
A. 顺序表
顺序表存储的最大特点是使用数组,可以做到数据随机访问。
下面是它的结点建立方式
typedefstruct
{
int data[100]; //数据数量最大为100
int length ; //表长
}Sqlist;
B. 链表
链表的分类有很多,比如单链表,双链表,循环链表等。它们都是由单链表转换而来的,在这里着重讲解一下单链表。
单链表特点,大小可申请,无最大上限,访问不随机,需要指针遍历。
单链表结点创建(头结点法)
typedefstruct node
{
int data;
struct node *next ;
int length ;
}LinkList;
链表创建方法
头插法
void CreateList ( LinkList*&L ,int n )
{
int i ;
LinkList *s ;
L = ( LinkList * )malloc( sizeof( LinkList ));
L ->next = NULL;
for( i = 0 ; i < n ; i++ )
{
s = ( LinkList * )malloc( sizeof ( LinkList));
cin >>s->data;
s->next = L->next;
L->next =s ;
}
}
尾插法
void CreateList1 ( LinkList *&L , int n)
{
int i ;
LinkList *r , *s;
L= ( LinkList * )malloc( sizeof ( LinkList ));
r= L ;
for( i = 0 ; i < n ; i++ )
{
s = ( LinkList * )malloc( sizeof ( LinkList ));
cin>>s->data;
r->next = s;
r = s ;
}
r->next = NULL;
}