参考严蔚敏/吴伟民版《数据结构-C语言版》
线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素。每个节点不仅存储本身的信息,还存储一个指示其直接后继的信息(即直接后继的位置).
// ---- 线性表的单链表存储结构 ----
typedef struct LNode{
ElemType elem data;
struct LNode *next;
}LNode, *LinkList; // 因为链表的指针其实就是执行LNode类型的指针,所以声明为struct LNode *LinkList(或者说 LNode *LinkList)
// 获取元素
Status GetELem_L(LinkList L, int i, ElemType &e){
// L为带头节点的单链表的头指针
p = L->next; j+1; // p指向头结点的下一个节点——也就是第一个节点
while(p && j<i){
// p一直移动到位置i
p = p->next; ++j;
}
if(!p || j>i) return ERROR;
e = p->data;
return OK;
}
Status ListInsert_L(LinkList &L, int i, ElemType e){
// 在带头节点的单链表L中第i个位置之前插入元素e
p = L;
j = 0;
while(p && j< i-1) {
// 移动p到位置i
p = p->next;
++j;
}
if(!(p->next) || j>i-1) return ERROR;
s = (LinkList) malloc(sizeof(LNode)); // 构造出一个新节点