平时练习之简单链表.docx
《平时练习之简单链表.docx》由会员分享,可在线阅读,更多相关《平时练习之简单链表.docx(13页珍藏版)》请在冰豆网上搜索。
平时练习之简单链表
#include
#include
#include
usingnamespacestd;
constintsize=10;
structProduct
{
charname[10];
intnumber;
doublevalue;
};
structLinearList
{
Product*element;
intlength;
intmaxsize;
};
Productp[size]=
{
{"卫生纸",1001,3.02},
{"牙膏",2003,5.00},
{"毛巾",8321,8.21},
{"书",5980,14.50},
{"化妆镜",4090,10.34},
{"小刀",2820,1.21},
{"枕套",3333,35.00},
{"钱包",6321,49.99},
{"玫瑰花束",5577,100.00},
{"钢笔",1100,29.73}
};
voidCreatLinearList(LinearList&L,intMaxListSize)
{
L.maxsize=MaxListSize;
L.element=newProduct[L.maxsize];
L.length=0;
}
voidprint(Productx)
{
cout<:
fixed)<(2)<}
voidOutputLinearList(LinearList&L)
{
inti;
cout<<"*************************"<cout<for(i=0;i<10;i++)
print(L.element[i]);
cout<<"*************************"<}
boolGetElemLinearList(LinearList&L,intk,Product&result)
{
if(k<1||k>L.length)returnfalse;
result=L.element[k-1];
returntrue;
}
intSearchByNumber(LinearList&L,intnum)//通过编号找到元素位置
{
inti;
for(i=0;i{
if(L.element[i].number==num)
returni;
}
return-1;
}
intSearchByValue(LinearList&L,doubleval)//通过价格找到元素位置
{
inti;
for(i=0;i{
if(L.element[i].value==val)
returni;
}
return-1;
}
intSearchByName(LinearList&L,charna[])//通过名称找到元素位置
{
inti;
for(i=0;i{
if(strcmp(L.element[i].name,na)==0)
returni;
}
return-1;
}
intSearchLinearList(LinearList&L,Product&x)
{
for(inti=0;iif(strcmp(L.element[i].name,x.name)==0&&L.element[i].value==x.value&&L.element[i].number==x.number)
returni;
return-1;
}
boolInsertLinearList(LinearList&L,intk,Product&one)
{
if(k<0||k>L.length||L.length==L.maxsize)
returnfalse;
for(inti=L.length-1;i>=k;i--)
L.element[i+1]=L.element[i];
strcpy(L.element[k].name,one.name);
L.element[k].number=one.number;
L.element[k].value=one.value;
L.length++;
returntrue;
}
boolDeleteLinearList(LinearList&L,intk)
{
if(k<1||k>L.length)returnfalse;
{
for(inti=k;iL.element[i-1]=L.element[i];
L.length--;
returntrue;
}
}
intmain()
{
intx;//选择操作数
LinearListL;
intmax=20;
CreatLinearList(L,max);
for(inti=0;i<10;i++)
InsertLinearList(L,i,p[i]);
do
{
cout<<"请输入您想要进行的操作编号:
"<cout<<"1.打印现有线性表"<cout<<"2.插入新的购物单元素"<cout<<"3.删除已有的购物单元素"<cout<<"4.查找购物单元素"<cout<<"5.退出"<cin>>x;
switch(x)
{
case1:
OutputLinearList(L);break;
case2:
cout<<"请输入您所要插入的商品信息及想要插入的位置编号"<Productx;
intm;
cout<<"名称:
";
cin>>x.name;
cout<<"编号:
";
cin>>x.number;
cout<<"价格:
";
cin>>x.value;
cout<<"位置:
";
cin>>m;
if(InsertLinearList(L,m,x))
{
cout<<"插入成功,新的购物单如下:
"<OutputLinearList(L);
}
elsecout<<"插入失败,请您重新选择!
"<break;
case3:
chardeleteway;
cout<<"请您选择删除方式:
"<cout<<"A.输入商品名"<cout<<"B.输入商品编号"<cout<<"C.输入商品价格"<cout<<"D.输入购物单元素位置"<cin>>deleteway;
intl;
switch(deleteway)
{
case'A':
charna[10];
cin>>na;
if(l=SearchByName(L,na)+1)
{
if(DeleteLinearList(L,l))
{
cout<<"删除成功,新的购物单如下"<OutputLinearList(L);
}
elsecout<<"删除失败!
"<}
else
cout<<"原购物单没有此项商品,请重新输入!
"<break;
case'B':
intnum;
cin>>num;
if(l=SearchByNumber(L,num)+1)
{
if(DeleteLinearList(L,l))
{
cout<<"删除成功,新的购物单如下"<OutputLinearList(L);;
}
elsecout<<"删除失败!
"<}
else
cout<<"原购物单没有此项商品,请重新输入!
"<break;
case'C':
doubleval;
cin>>val;
if(l=SearchByValue(L,val)+1)
{
if(DeleteLinearList(L,l))
{
cout<<"删除成功,新的购物单如下"<OutputLinearList(L);;
}
elsecout<<"删除失败!
"<}
else
cout<<"原购物单没有此项商品,请重新输入!
"<break;
case'D':
cin>>l;
if(DeleteLinearList(L,l+1))
{
cout<<"删除成功,新的购物单如下"<OutputLinearList(L);;
}
elsecout<<"删除失败!
"<break;
}
case4:
charsearchway;
cout<<"请您选择查找方式:
"<cout<<"A.输入商品名"<cout<<"B.输入商品编号"<cout<<"C.输入商品价格"<cout<<"D.输入购物单元素位置"<cin>>searchway;
intk;
Productres;
switch(searchway)
{
case'A':
charnam[10];
cin>>nam;
if(k=SearchByName(L,nam)+1)
{
if(GetElemLinearList(L,k,res))
{
cout<<"查找成功,这项商品信息为"<print(res);
}
elsecout<<"查找失败!
"<}
else
cout<<"原购物单没有此项商品,请重新输入!
"<break;
case'B':
intnumb;
cin>>numb;
if(k=SearchByNumber(L,numb)+1)
{
if(GetElemLinearList(L,k,res))
{
cout<<"查找成功,这项商品信息为"<print(res);
}
elsecout<<"查找失败!
"<}
else
cout<<"原购物单没有此项商品,请重新输入!
"<break;
case'C':
doublevalu;
cin>>valu;
if(k=SearchByValue(L,valu)+1)
{
if(GetElemLinearList(L,k,res))
{
cout<<"查找成功,这项商品信息为"<print(res);
}
elsecout<<"查找失败!
"<}
else
cout<<"原购物单没有此项商品,请重新输入!
"<break;
case'D':
cin>>k;
if(k=SearchByValue(L,valu)+1)
{
if(GetElemLinearList(L,k,res))
{
cout<<"查找成功,这项商品信息为"<print(res);
}
elsecout<<"查找失败!
"<}
elsecout<<"查找失败!
"<break;
}
break;
case5:
break;
default:
cout<<"请输入正确编号!
"<}
//system("cls");
}while(x!
=5);
for(i=0;iDeleteLinearList(L,i);
return0;
}