📄 list.h
字号:
//线性表的链式存储结构的十项基本操作
#include <iostream.h>
#include <process.h>
//结点定义
typedef struct lnode
{
int data;
struct lnode *next;
}lnode,*linklist;
//出错处理
void errormessage(char *s)
{
cout<<s<<endl;
}
//初始化链式表前插
void creatlist(linklist &l,int n)
{
linklist p;
l=NULL;
for(int i=n;i>0;i--)
{
p=new lnode;
cin>>p->data;
p->next=l;
l=p;
}
cout<<"创建的链式表元素是:";
for(i=1;i<=n;i++)
{
cout<<p->data<<'\t';
p=p->next;
}
}
//遍历
void traverselist(linklist l,int n)
{
linklist p;
p=l;
for(int i=1;i<=n;i++)
{
cout<<p->data<<'\t';
p=p->next;
}
}
//求长度
int lengthlist(linklist l)
{
linklist p;
p=l;
int k=0;
while(p)
{
k++;
p=p->next;
}
return k;
}
//取元素
int getlnode(linklist l,int i)
{
linklist p;
if(i<1||i>lengthlist(l))
{
errormessage("输入值非法!");
return 0;
}
else{
p=l;
int k;
for(k=1;k<i;k++)
{
p=p->next;
}
return p->data;
}
}
//求前导
int prelnode(linklist l,int e)
{
linklist p,q;
if(lengthlist(l)==1) return 0;
else{
q=p=l;
while(p&&p->data!=e)
{
p=p->next;
while(q->next!=p) q=q->next;
}
return q->data;}
}
//求后继
int postlnode(linklist l,int e)
{
linklist p;
p=l;
while(p&&p->data!=e)
p=p->next;
p=p->next;
return p->data;
}
//查找元素
int findlnode(linklist l,int e)
{
linklist p;
p=l;
int k=0;
while(p&&p->data!=e)
{
p=p->next;
k++;
}
if(k<lengthlist(l)) return k+1;
else{
errormessage("未找到!");}
}
//插入元素
void insertlnode(linklist &l,int i,lnode *s)
{
linklist p;
int j;
if(i<1||i>lengthlist(l)) errormessage("i值非法!");
else{
if(i==1)
{
s->next=l;
l=s;
}//在表头插入
else
{
p=l;
j=1;
while(p->next&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1) errormessage("Error!");
s->next=p->next;
p->next=s;
}
cout<<"插入元素后的链表各个元素分别是:";
traverselist(l,lengthlist(l));
}
}
//删除元素
void deletelnode(linklist &l,int i)
{
int e,j;
linklist p,q;
if(i<1||i>lengthlist(l)) errormessage("i值非法!");
else{
if(i==1)
{
q=l;
l=l->next;
}
else
{
p=l;j=1;
while(p->next&&j<i-1)
{
p=p->next;
++j;
}
q=p->next;
p->next=q->next;
}
e=q->data;
delete q;
traverselist(l,lengthlist(l));
}
}
//判定空表
void chargelist(linklist l)
{
if(l=NULL) cout<<"表为空!"<<endl;
else cout<<"表非空"<<endl;
}
//置空链式表
void emptylist(linklist &l)
{
linklist p;
p=l;
while(p)
{
p->data=0;
p=p->next;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -