顺序表的实现包含插入删除查找等操作完整源代码有注释包你喜欢.docx
《顺序表的实现包含插入删除查找等操作完整源代码有注释包你喜欢.docx》由会员分享,可在线阅读,更多相关《顺序表的实现包含插入删除查找等操作完整源代码有注释包你喜欢.docx(9页珍藏版)》请在冰豆网上搜索。
顺序表的实现包含插入删除查找等操作完整源代码有注释包你喜欢
实验一顺序表的实现
实验目的:
熟练掌握顺序表的基本操作(插入、删除、查找等)
实验内容:
顺序表中的基本操作的实现(初始化、插入、删除、求表长、按值查找、按位置查找)
实验要求:
以顺序表的动态分配存储结构来实现;所有基本操作均应该以函数的形式表示;要有运行结果并考虑到顺序表中所有情况。
一、实验算法描述:
1、顺序表的声明和创建
typedefstruct
{
int*data;//int*型元素
intlength;//顺序表的实际长度
intlistsize;//顺序表的最大长度
}sqlist;
voidcreatsqlist(sqlist&list)
{
list.data=(int*)malloc(sizeof(int)*maxsize);//开辟一个名为l的顺序表
if(!
list.data)//判断顺序表是否存在
exit
(1);
list.length=0;
list.listsize=maxsize;
}
2、初始化函数initsqlist(list)
voidinitsqlist(sqlist&list)//初始化操作
{
int*p;
intn;
cout<<"请输入顺序表元素数(1-50):
"<cin>>n;
cout<<"您申请的顺序表的长度是---"<p=list.data;//p指向头指针
cout<<"请依次输入无重复数字的有序顺序表(相邻数据用空格隔开,回车键完成输入):
"<for(inti=0;i{
cin>>*p;
p++;
list.length++;
}
cout<<"您输入的递增顺序表为:
"<for(i=0;icout<cout<}
3、输出函数put(list)
voidput(sqlist&list)//输出函数
{inti;
for(i=0;icout<cout<}
4、定位函数locateElem(list)
voidlocateElem(sqlist&list)
{
inti,j=0,b;
cout<<"请输如要查找的字符:
\n";
cin>>b;
for(i=0;iif(list.data[i]==b)
{j=i+1;break;}
if(j)
cout<<"该数字的位置是:
"<else
cout<<"很抱歉,表中没有这个数字,请重试!
"<}
5、插入函数insert(list)
voidinsert(sqlist&list)//插入函数
{
inti;
cout<<"您想在第几位插入数字:
\n";
cin>>i;
intx;
cout<<"请输入要插入的数字:
\n";
cin>>x;
intj;
if(i<0||i>list.length)
{
cout<<"位置错误"<put(list);
}
else
{for(j=list.length;j>=i;j--)
list.data[j]=list.data[j-1];
list.data[j]=x;
list.length++;
}
cout<<"插入操作完成后的顺序表:
"<put(list);
}
6、删除函数delete1(list)和delete2(list)
voiddelete1(sqlist&list)//删除第i个位置的数字的函数
{
inti,b;
cout<<"请输入你想要删除数据的位置:
"<cin>>i;
if(i<0||i>list.length)
{cout<<"输入错误!
"<else
{b=list.data[i-1];
for(i=i-1;ilist.data[i]=list.data[i+1];
--list.length;
cout<<"需要删除的元素是:
"<
cout<<"删除操作完成后的顺序表是:
"<put(list);
}
}
voiddelete2(sqlist&list)//删除指定数字的函数
{
intb;
cout<<"输入您想删除的数字:
"<cin>>b;
inti,j=0;
for(i=0;i{
if(list.data[i]==b)
{j=i+1;break;}
}
if(j!
=0)
{
for(;ilist.data[i]=list.data[i+1];
--list.length;
cout<<"该位置是第"<
cout<<"删除操作完成后的顺序表是:
"<put(list);
}
else
cout<<"很遗憾,表中没有找到此数字,删除不成功,请重试!
"<}
二、实验程序描述:
主函数如下:
intmain()
{
intflag;
sqlistl;
creatsqlist(l);
initsqlist(l);
cout<cout<<"请输入要进行的操作序号:
\n";
cout<<"1.插入字符"<cin>>flag;
do
{
switch(flag)
{case1:
insert(l);break;
case2:
locateElem(l);break;
case3:
delete1(l);break;
case4:
delete2(l);break;
default:
cout<<"请重新输入||代码错误"<cout<<"**************************************************************************"<cout<<"请输入要进行的操作序号:
\n";
cout<<"1.插入字符"<cin>>flag;
}
while(flag!
=0);
return0;
}
三、实验结果(输入和输出):
1、输入界面:
2、插入操作:
3、查找操作:
4、删除操作: