2线性表的链式储存:
由线性表的顺序储存可以得知,顺序储存结构有其自身的优点<查找特别快捷>,当然同时存在其自身的缺点<对于插入和删除时,需要移动大量的指针>,所以衍生了链式结构来弥补其措施。
链式储存是采用动态储存的方法,其储存的单元不受限制,既可以是连续的储存的地址,也可以是非连续的储存地址,这样对于经常需要删除、插入的数据来说最为合适了,当然,这样对于每个数据的节点都需要一个指针域来指向下一个节点,来实现数据逻辑上的连续。
2.1单链表
链表的头结点用于储存链表的位置,而其最后一位数据的指针域为NULL,这样的链表称为单链表。其储存结构的描述如下:
typdef struct Node
{ ElemTyple data;
structNode * next;
}Node,*LinkList;
Ps;LinkList与Node *同为结构指针类型,通常前者用于表示说明指针变量,强调它是某个单链表的头指针变量,而后者则是表示单链表中结点的指针。
2.1.1单链表的基本运算:
1.初始化:
IintList(LinkList *L)
{
*L=(LinkList)malloc(sizeof(Node));
(*L)->next=NULL;
}
建立一个空的单链表,
2.建立单链表:
链表的初始化分为两种:头插法和尾插法。
头插法:每次插入的结点都放在头结点的后面,因而形成的链表和插入的顺序相反。其代码如下:
void CreateFromHead(LinkList L)
{
Node *s;
char c;
int flag+1;
while(fiag)
{
c=getchar();
If(c!=’$’)
{
S=(Node*)malloc(sizeof(Node));