线性表的基本运用

在这里插入图片描述
#include<iostream.h>
#define linesize 50 //宏定义
typedef char ElemType;
typedef struct
{
ElemType data[linesize]; //存放线性表元素
int length; //存放线性表长度
}sqlist; //顺序表类型

//1.初始化线性表
void chushi(sqlist *&L)
{
L=new sqlist;
L->length=0;
}
//2.建立线性表
void jianli(sqlist *&L,ElemType a[ ],int n)
{

for(int i=0;i<n;i++)
	L->data[i]=a[i];
	L->length=n;

}
//3.输入线性表元素
void shuru(sqlist *&L)
{
ElemType b[100];
int c;
cout<<“请输入你要输入元素的个数:”;
cin>>c;cout<<endl;
cout<<“请输入你要输入的元素:”;
for(int i=0;i<c;i++)
cin>>b[i];
sqlist *L1;
chushi(L1);
jianli(L1,b,c);
}
//4.输出顺序表长度
int changdu(sqlist *L)
{
return (L->length);
}

//5.检验顺序表是否为空
bool jianyan(sqlist *L)
{
return (L->length==0);
}
//6.输出顺序表的第某个元素
bool quyuansu(sqlist *L,int weizhi, ElemType &n)
{
if(weizhi<1||weizhi>L->length)
return false;
else
n=L->data[weizhi-1];
return true;
}
//7.输出顺序表
void quanshuchu(sqlist *L)
{
int i;
if(jianyan(L))
return;
for(i=0;ilength;i++)
cout<data[i]<<’ ';
}
//8.输出顺序表的某个元素的位置
int quweizhi(sqlist *L,ElemType q)
{
int i=0;
while(ilength&&L->data[i]!=q)
i++;
if(i>=L->length)
return 0;
else
return i+1;
}
//9.在顺序表中插入某个元素
bool charu(sqlist *&L,int i,ElemType f)
{
int j;
if(i>L->length+1||i<1)
return false;
i–;
for(j=L->length;j>=i;j–)
{
L->data[j+1]=L->data[j];
}
L->data[i-1]=f;
L->length++;
return true;
}
//10.在顺序表中删除某个元素
bool shanchu(sqlist *&L,int i,ElemType &q)
{
int j;
if(i>L->length||i<1)
return false;
i–;
q=L->data[i];
for(j=i;jlength-1;j++)
L->data[j]=L->data[j+1];
L->length–;
return true;
}
//11.销毁线性表
void xiaohui(sqlist *&L)
{
delete L ;
}
void main()
{
ElemType b[100];
int c;
cout<<“请输入你要输入元素的个数:”;
cin>>c;cout<<endl;
cout<<“请输入你要输入的元素:”;
for(int i=0;i<c;i++)
cin>>b[i];
sqlist *L1;
chushi(L1);
jianli(L1,b,c);
jianyan(L1);
if(jianyan(L1))
cout<<“该顺序表为空”;
else
cout<<“该顺序表不为空”<<endl;
cout<<“该顺序表为:”;quanshuchu(L1);cout<<endl;
int l;
l=changdu(L1);
cout<<“该顺序表长度为:”<<l<<endl;
int e;
cout<<“请输入你要取得位置:”;cin>>e;
ElemType temp;
if(quyuansu(L1,e,temp))
cout<<“取值成功,第”<<e<<“个位置的值为”<<temp<<endl;
else
cout<<“你输入的值不合法,超出范围”<<endl;
ElemType w;
cout<<“请输入你要取位置的元素:”;
cin>>w;
l=quweizhi(L1,w);
cout<<“该元素的位置为:”<<l<<endl;

 int r;
 ElemType t;
 cout<<"请输入你要插入元素的位置为:";cin>>r;
 cout<<"请输入你要插入的元素值为:";cin>>t;
 charu(L1,r,t);
 if(charu(L1,r,t))
 {
	 cout<<"插入成功,此时顺序表为:";quanshuchu(L1);
 }
 else
	 cout<<"插入失败,你输入的值超出范围";
 cout<<endl;
 int y;
 ElemType u;
  cout<<"请输入你要删除元素的位置为:";cin>>y;
 cout<<"请输入你要删除的元素值为:";cin>>u;
 if(shanchu(L1,y,u))
 {
	 cout<<"删除成功,此时顺序表为:";quanshuchu(L1);
 }
 else
	 cout<<"删除失败,你输入的值超出范围";
 xiaohui(L1);
 cout<<endl;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值