线性表的顺序存储和链式存储
一、线性表是一种逻辑数据结构。
线性表是最基本、最简单、也是最常用的一种数据结构。
二、线性表的实现。线性表的顺序存储结构和线性表的链表存储结构。
2.1、顺序存储
所谓顺序存储,是用数组来实现的,在内存中分配一块连续的地址区间,将数据按顺序存储到该数组中;
a1 | a2 | a3 | a4 | a5 | ...... | ai-1 | ai |
...... |
an |
存储结构如下:
#define MAXSIZE 20
typedef int ElemType ;
typedef struct
{
ElemType data[MAXSIZE] ;
int length ;
}SqLst ;
2.2、单链表结构
线性表的链式存储结构每个数据元素包含两部分信息,一部分是数据信息,叫做数据域;一部分是指针域,存放后继元素的地址信息。
每个链表有一个头指针,指向链表的第一个元素;链表的最后一个元素的指针域为NULL。有的链表包含头结点、有的链表不包含头结点。头结点并不是真正意义上的第一个结点,因为它的数据信息是没有意义的。
单链表结构描述:
typedef struct Node
{
ElemType data ;
struct Node *node ;
}Node ;
typedef struct Node *LinkList ;
LinkList L :这里的L其实就相当于链表的头指针,指向这个链表。如果是没有头结点的链表,那么L就是指向的第一个结点,L->data为第一个结点的数据域;L->next为第二个节点。但是如果链表是有头结点的,L->next才是第一个结点。
LinkList *L :这里的L是指向链表的头指针的指针,*L才是链表的头指针,因此如果没有头结点的链表,那么(*L)就是指向第一个结点,(*L)->data就是第一个结点的数据域;如果是带有头结点的链表,(*L)->next为第一个结点。
感谢您的阅读,您的支持是我写博客动力。