目录
1.定义链表
2.单链表的初始化
3.单链表的销毁
?4.清空链表
1.定义链表
typedef struct Lnode {
ElemType data; //数据域
struct Lnode *next; //指针域
} Lnode, *LinkList;
定义链表:LinkList head;? ? ?//定义指向头结点的指针,就代表整个链表(空表)
定义结点指针:Lnode *p;
2.单链表的初始化
(1)构造空表
Status InitList_L (LinkList &L) {
L = (LinkList)malloc(sizeof(Lnode)); //生成新结点作头结点
用头指针指向头结点
L->next = NULL; //将头结点的指针域置空
return OK;
}
(2)判断链表是否为空
判断头结点的指针域是否为空
int ListEmpty(LinkList L){
if((L->next) != NULL) //非空
return 0;
else
return 1;
}
3.单链表的销毁
从头指针开始依次释放所有结点
?
status Destory_L(LinkList &L){
Lnode *p;
while(L != NULL){
p = L;
L =L->next;
free(p);
}
return 0;
}
?4.清空链表
?链表仍然在,但表中无元素,为空表
依次释放所有结点,将头结点指针域置空
?
Status ClearList(LinkList &L){
Lnode *p, *q;
p = L->next;
while(p != NULL){
q = p->next;
free(p);
p = q;
}
L->next = NULL;
return OK;
}
?4.求链表表长
int Listlength_L(LinkList L){ //返回L中的元素个数
LinkList p;
p = L->next; //P指向第一个结点
int i = 0;
while(p != NULL){
i++;
p = p->next;
}
return i;
}
?
?
|