单链表的基础操作:
typedef Struct student {
char num[8] //数据域
char name[8] //数据域
int score; //数据域
struct student *next; //指针域
} Lnode , * LinkList ;
更常用的定义方式:
typedef Struct{
char num[8];
char name[8[;
int score;
}ElemTyoe;
typedef struct Londe{
ElemType data; //数据域
struct Lnode *next; //指针域
}Lnode , *Linklist;
单链表上的实现
1.
算法:
typedef struct Lnode{
ElemType data;
struct Lnode *next;
} Lnode , *LinkList;
Status InitList L(LinkList &L){
L = new Lnode; //创造一个结点内存空间给L
//L是指针变量
L - > next = NULL;
return OK ;
}
算法:
int ListEmpty(LinkList L){
if(L->next) //非空
return 0;
else
return 1;
}
结束条件: L ==NULL;
循环条件: L!= NULL;
算法:
Status DestroyList_L (LiskList &L){
Lnode *p; //定义结点
while (L){
p =L;
L = L->next;
delete p;
}
return OK;
}
清空链表
Status ClearLidt(LinkList &L ){
Lnode *p,*q; //定义两个结点
p = L->next;
while(p) { //没到结尾
q=p->next;
delete p;
p=q;
}
L->next = NULL; //头结点指针域为空
return Ok;
}
- 求单链表的表长
//如果操作一个结点,那么我们用LNode *P;
int ListLength_L(LinkList L){
LinkList p; //指针变量P ,指向某一个结点。
p = L->next;
i=0;
while(p) {
i++;
p=p->next;
}
return i ;
总结: