(1)清空单链表
while(L->next){
p=L->next;
L->next=p->next;
free(p);
}
分析:p 指向L的 next 域,L的 next域 在指向 p 的 next 域(p=L->next),其实就是L指向了 L 的 next 的 next 域.然后清空 p
不断循环,知道 L->next == NULL
(2)销毁单链表
while(L){
p=L->next;
free(L);
L=p;
}
(3)单链表判断是否为空
if(L->next==NULL)
return TRUE;
else
return FALSE;
(4)求单链表的表长
int ListLength(LinkList L){
p=L->next;
i=0;
while(p){
i++;
p=p->next;
}
return i;
}
(5)单链表中如何查找元素
p=L->next;
i=1;
while(p && p->data!=e){
p=p->next; i++;
}
if(p){
return i;
}
else{
return 0;
}
分析:从第一个结点开始搜索,搜索成功,返回位序;否则,返回0
分析:
void CreateList_N(LinkList &L, int n) {
// 逆序输入 n 个数据元素,建立带头结点的单链表
L = (LinkList) malloc (sizeof (LNode));
L->next = NULL;
for (i = 1; i <=n; i++) {
p = (LinkList) malloc (sizeof (LNode));
scanf(&p->data); // 输入元素值
p->next = L->next; L->next = p; // 插入
}
分析:
L = (LinkList) malloc (sizeof (LNode));
L->next = NULL;
p=L;
for(i=1;i<=n;i++){
q=(LinkList)malloc(sizeof(LNode));
scanf(&q->data);
q->next=p->next;
p->next=q;
p=q;
}
原文地址:http://blog.csdn.net/gxseveryday/article/details/45586329