算法分析实验一顺序表的实现
班级学号姓名分数
一、实验目的:
1.掌握线性表的顺序存储结构
2.能熟练地利用顺序存储结构实现线性表的基本操作
3.能熟练地掌握顺序存储结构中算法的实现
二、实验要求
熟悉线形表的基本操作,对线形表能够进行插入、删除、修改、查找等操作。
三、实验内容及分析:
建立含有若干个元素的顺序表,并将结果在屏幕上输出。
对刚建立的顺序表实现插入、删除、修改、查找,并将结果在屏幕上输出。
内容分析:先建立一个顺序表,定义表的最大长度为100,程序可以实现输出、查找、插入、删除操作。
先定义一个整型变量i,用于初始线性表的长度,再输入所有元素,选择菜单里的选项实现功能。
插入:选择需插入元素的位置,插入位置及后面的元素后移一位,再插入元素;删除:选择要删除元素的位置,将要删除的元素移出顺序表,删除位置后的元素前移一位;查找:输入要查找的元素,按顺序查找,当查找到顺序表的第一个与要查找的元素相同时,输出结果。
四、程序的调试及运行结果
五、程序代码
#include <iostream>
using namespace std;
const int Max=100; <<endl;
cout <<endl;
initial(s); 示所有元素. " <<endl;
cout <<" 2.插入一个元素." <<endl;
cout <<" 3.删除一个元素." <<endl;
cout <<" 4.查找一个元素." <<endl;
cout <<" 5.结束程序." <<endl;
cout <<"---------------------------" <<endl;
cout <<"请选择:" ;
cin >>j;
switch(j)
{
case '1':print(s);break; 2 a <<endl;
else if(temp==true)
print(s);
break;
}
case '3':
{
cout <<"请输入要删除元素的位置: ";
cin >>loc; //输入要删除的元素的位置
temp=del(s,loc,ch); //删除检查
if(temp==true)
cout <<"删除了一个元素: " <<ch <<endl;
else
cout <<"该元素不存在!" <<endl;
print(s);
break;
}
case '4':
{
cout <<"请输入要查找的元素: " ;
cin >>ch; //输入要查找的元素
loc=locate(s,ch); //寻找元素的位置
if(loc!=-1)
{
cout <<"该元素所在位置: " ;
cout <<(loc+1) <<endl;
}
else
cout <<"该元素不存在!" <<endl;
break;
}
default:
flag=0;
cout <<"程序结束,按任意键退出!" <<endl;
}
}
}
//初始化线性表
void initial(seqlist &v)
{
int i;
cout <<"请输入初始线性表长度:n=";
cin >>;
c out <<"请输入各元素/字符[中间用空格隔开](例如:a b c d): ";
for(i=0;i<;i++)
cin >>&[i];
}
//插入一个元素,成功返回True,失败返回False
bool insert (seqlist &v,int loc,char ch)
{
int i;
i f((loc<1)||(loc>+1))
{
cout <<"插入位置不合理!" <<endl; //位置错误
return false;
}
else if>=Max)
{
cout <<"超出线性表最大容量!" <<endl; //溢满
return false;
}
else
{
for(i=;i>=loc-1;i--)
[i+1]=[i]; //插入位置后的元素后移
[loc-1]=ch; //插入元素
++; //表长度加1
return true;
}
}
//删除一个元素,成功返回True,并用ch返回该元素值,失败返回False bool del(seqlist &v,int loc,char &ch)
{
int j;
if(loc<1||loc>
{
cout <<"删除位置不合理!" <<endl;
return false;
}
else
{
ch=[loc-1]; //将删除位置的元素赋给ch
for(j=loc-1;j<;j++)
[j]=[j+1]; //删除位置后元素前移
; //表长度减1
return true;
}
}
//在线性表中查找ch的位置,成功返回其位置,失败返回-1 int locate(seqlist v,char ch)
{
int i=0;
w hile(i<&&[i]!=ch)
i++;
if[i]==ch)
return i;
else return (-1);
}
//显示线性表的所有元素
void print(seqlist v)
{
int i;
for(i=0;i<;i++)
cout <<[i] <<' ';
cout <<endl;
}。