【补充算法3】清空单链表:
链表依然存在(头结点和头指针依然存在),但链表中无元素,成为空链表
算法思路:依次释放头结点指向的首元结点之后的所有结点。
算法结束条件:p==NULL; 循环条件:p!=Null;
代码:
Status ClearList(LinkList &L) {
LNode *p,*q;
p = L->next;
while(p) {
q = p->next;
free(p);
p = q;
}
L->next = NULL;
return OK;
}
算法思路:从首元结点开始(不要包括头结点),依次计数所有结点
代码:
int ListLength_L(LinkList L) {
LNode *p;
p = L ->next;
int i = 0;
while(p) {
p = p -> next;
i++;
}
return i;
}
算法思路:从链表的头指针出发,顺着链表逐个结点往下搜索,直到搜索到第i个结点为止
可以看出,链表不是随机存储结构
算法步骤: