一、链式存储结构的特点
用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此,每个结点都必须有指针域。
二、单链表
1.定义:每一个结点只含有一个指针域的链式结构称为单链表。
2.单链表结点的类型定义:
typedef struct Lnode{
int data; //数据域
struct Lnode *next; //指针域
}Lnode,*LinkList;
3、关于带头节点的单链表及不带头节点的单链表
(1)带头节点的单链表为空时:L->next==NULL;
(2)不带头节点的单链表为空时:L=NULL;
三、单链表的基本操作
1、单链表中获取一个元素
(1)找第i个结点
GetElem(LinkList L,int i,int e)
{
int j;
LinkList p;
p=L->next;j=1;//p指向第一个结点,j为计数器
i=3; //假设需要找第3个结点
while(p&&j<i) //当p指针不为空并且还未到达第i个结点
{
p=p->next; //p指向下一个结点
j++; //计数器加一
}
if(!p||j>i)
return ERROR;//第i个元素不存在
else e=p->data;
return OK;
}
(2)找值为x的元素
GetElem(LinkList L,int x,int e)
{
while(p&&p->data!=x)
{
p=p_>next;
}
if(!p)
return ERROR;//不存在值为x的结点
else e=p->data;
return OK;
}