📄 linklist.cpp
字号:
#include "LinkList.h"
void Initlist(link &L) //初始化一个空的线性链表L
{
L->next=NULL;
Llength=0;
}//Initlist
int Listlength(link L) //求链表的长度
{
return Llength;
}//Listlength
int Listempty(link &L) //判断链表是否为空链表
{
if(!L->next==NULL) return FALSE;
else return TRUE;
}//Listempty
int Listinsert(link &L,int i,ElemType e) //将e插入到第i个元素前
{
link p,s;
p=L;
int j=0;
while(p&&(j<(i-1)))
{
p=p->next;
++j;
}
if(!p||j>i-1)
{
cout<<" i是不合法的";
return ERROR;
}
s=(link)malloc(sizeof(Lnode));
s->next=p->next; s->data=e; p->next=s;
Llength++;
return OK;
}//Listinsert
int Listdelete(link &L,int i,ElemType &e) //删除第n个元素并由e返回其值
{
link p=L,q;
int j=0;
while(p->next&&j<i-1){p=p->next; ++j;}
if(!(p->next)||j>i-1)
{
cout<<"i不合法";
return ERROR;
}
q=p->next; p->next=q->next;
e=q->data;
Llength--;
free(q);
return OK;
}//Listdelete
void Listdisplay(link l) //显示链表内容
{
int i=0;
link r;
r=l;
for(i=1;i<=Llength;i++)
{
r=r->next;
cout<<r->data<<endl;
}
}//Listdisplay
void Createlist(link &l,int n) //创建链表
{
l=(link)malloc(sizeof(Lnode));
int i;
link p;
l->next=NULL;
Llength=n;
for(i=n;i>0;--i)
{
p=(link)malloc(sizeof(Lnode));
cout<<"输入第"<<i<<"值";
cin>>p->data;
p->next=l->next;
l->next=p;
}
}//Createlist
int Seekprecedor(int i,link &q,link &l) //寻找第i个结点的前驱
{
link p;
p=l;
int j=0;
if(i>Llength+1)
{
cout<<"i非法";
return ERROR;
}
while(p&&j<i-1)
{
p=p->next;
++j;
}
q=p;
return OK;
}//Seekprecedor
int Set(link &l,int i,link &q) //定位第i个结点
{
int j=0;
link p=l;
if(i>Llength) {
cout<<"i非法";
return ERROR;
}
while(p&&j<i)
{
p=p->next;
++j;
}
q=p;
return OK;
}//Set
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -