定义
示例
操作
初始化
判空
销毁
清空
求表长
按下标取值
按值取下标
找到返回下标
整合代码:
//建立单链表
typedef struct node{
int data;
node *next;
}lnode,*linklist; //定义类型
lnode * p;//定义结点
linklist l;//定义链表
//初始化
void init(linklist &l){
l=new lnode;
l->next=NULL;
}
//判空
int empty(linklist l){
if(l->next)
return 0;//不为空的处理
else return 1;//为空的处理
}
//销毁
void destroy(linklist &l){
lnode *p;//作为删除结点
while(l){//将表头也要删除
p=l;
delete p;
l=l->next;//删除下一个
}
}
//清空
void clear(linklist &l){
lnode *p,*q;
p=l->next;//保留头结点
while(p->next){
q=p->next;//记录下一个要删除的结点
delete p;
p=q;//更新到下一个
}
l->next=NULL;//置空处理
}
//求表长
int getlength(linklist l){
int count=0;
lnode *p=l;
if(p->next){
count++;
p=p->next;
}
return count;
}
//按下标取值
int getValue(linklist l,int index){
lnode *p=l;
int i=1;
//特殊情况的处理
if(i>index||p->next==NULL) return 0;
//找下标,取值
while(p->next&&i<index){
p=p->next;
i++;
}
return p->data;
}
//按值取下标
int getindex(linklist l,int value){
lnode* p=l;
int i=1;
//特殊情况的处理
if(p->next==NULL) return 0;
//记录位置,对比值
while(p&&p->data!=value){
p=p->next;
i++;
}
return i;
}