一、 单链表的初始化(带头结点)
算法步骤:
- 生成新结点作头结点,用头指针L指向头结点。
- 将头结点的指针域置空。
typedef struct Lnode{
ElemType data;
struct Lnode *next;
}LNode,*LinkList;
Status InitList_L(LinkList &L){
L = new LNode; //或L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
return OK;
}
二、 判断链表是否为空
算法步骤:
- 判断头结点指针域是否为空
int LinkEmpty(LinkList L){ //若为空表,返回1,否则返回0
if(L->next)
return 0;
else
return 1;
}
三、 单链表的销毁(链表销毁后不存在)
算法步骤:
- 从头指针开始,依次释放所有结点
Status DestroyList_L(LinkList &L){
Lnode *p; //或LinkList p;
while(L){
p = L;
L = L->next;
delete p;
}
四、 清空链表--链表仍然存在,但链表中没有元素
算法步骤:
- 依次释放所有结点,并将头结点指针域设置为空
Status ClearList(LinkList &L){
Lnode *p,*q; //或LinkList p,q;
p=L->next;
while(p){
q=p->next;
delete p;
p=q;
}
L->next==NULL;
return OK;
}
五、 求单链表的表长
算法思路:
- 从首元结点开始,依次计数所有结点
int ListLength_L(LinkList &L){
LinkList p; //Lnode *p;
p=L->next; //p指向第一个结点
i=0;
while(P){
i++; //遍历单链表,统计结点数
p=p->next;
}
return i;
}