单链表,我们可以用c语言的结构指针来描述
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
从这个结构指针中我们可以得出,单链表的结点是由存放数据的数据域和存放后继结点地址的指针域组成。
获得链表第i个数据的算法思路:
- 声明一个指针p指向链表的第一个结点,初始化j从1开始;
- 当j<i时,就遍历链表,让p的指针向后移动,不断指向下一个结点,j累加1;
- 若到链表末尾p为空,则说明第i个结点不存在;
- 否则就查找成功,返回结点p的数据。
代码如下:
Status GetElem_L(LinkList L, int i, ElemType *e)
{
int j;
j = 1;
LinkList p;
p = L->next;
while(p && j < i)
{
p = p->next;
++j;
}
if(!p || j > i)
return ERROR;
*e = p->data;
return OK;
}
单链表第i个数据插入结点的算法思路:
- 声明一个指针p指向链表的第一个结点,初始化j从1开始;
- 当j<i时,就遍历链表,让p的指针向后移动,不断指向下一个结点,j累加1;
- 若