收藏 分销(赏)

顺序表的实现-包含插入-删除-查找等操作-完整源代码-有注释-包你喜欢.doc

上传人:xrp****65 文档编号:5914691 上传时间:2024-11-23 格式:DOC 页数:6 大小:1.52MB 下载积分:10 金币
下载 相关 举报
顺序表的实现-包含插入-删除-查找等操作-完整源代码-有注释-包你喜欢.doc_第1页
第1页 / 共6页
顺序表的实现-包含插入-删除-查找等操作-完整源代码-有注释-包你喜欢.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
实验一 顺序表的实现 实验目的:熟练掌握顺序表的基本操作(插入、删除、查找等) 实验内容:顺序表中的基本操作的实现(初始化、插入、删除、求表长、按值查找、按位置查找) 实验要求:以顺序表的动态分配存储结构来实现;所有基本操作均应该以函数的形式表示;要有运行结果并考虑到顺序表中所有情况。 一、实验算法描述: 1、顺序表的声明和创建 typedef struct { int* data;//int*型元素 int length;//顺序表的实际长度 int listsize;//顺序表的最大长度 }sqlist; void creatsqlist(sqlist &list) { list.data=(int*)malloc(sizeof(int)*maxsize);//开辟一个名为l的顺序表 if(!list.data)//判断顺序表是否存在 exit(1); list.length=0; list.listsize=maxsize; } 2、初始化函数initsqlist(list) void initsqlist(sqlist &list)//初始化操作 { int* p; int n; cout<<"请输入顺序表元素数(1-50):"<<endl;//让用户输入顺序表元素个数 cin>>n; cout<<"您申请的顺序表的长度是---"<<n<<endl; p=list.data;//p指向头指针 cout<<"请依次输入无重复数字的有序顺序表(相邻数据用空格隔开,回车键完成输入):"<<endl; for(int i=0;i<n;i++)//逐个赋值 { cin>>*p; p++; list.length++; } cout<<"您输入的递增顺序表为:"<<endl;//打印出初始化的顺序表 for(i=0;i<n;i++) cout<<list.data[i]<<"\t"; cout<<endl; } 3、输出函数put(list) void put(sqlist &list) //输出函数 { int i; for(i=0;i<list.length;i++) cout<<list.data[i]<<"\t"; cout<<endl; } 4、定位函数locateElem(list) void locateElem(sqlist &list) { int i,j=0,b; cout<<"请输如要查找的字符:\n"; cin>>b; for(i=0;i<list.length;i++) if(list.data[i]==b) {j=i+1;break;} if(j) cout<<"该数字的位置是:"<<j<<endl; else cout<<"很抱歉,表中没有这个数字,请重试!"<<endl; } 5、插入函数insert(list) void insert(sqlist &list)//插入函数 { int i; cout<<"您想在第几位插入数字:\n"; cin>>i; int x; cout<<"请输入要插入的数字:\n"; cin>>x; int j; if(i<0||i>list.length) { cout<<"位置错误"<<endl; put(list); } else { for(j=list.length;j>=i;j--) list.data[j]=list.data[j-1]; list.data[j]=x; list.length++; } cout<<"插入操作完成后的顺序表:"<<endl; put(list); } 6、删除函数delete1(list)和delete2(list) void delete1(sqlist &list)//删除第i个位置的数字的函数 { int i,b; cout<<"请输入你想要删除数据的位置:"<<endl; cin>>i; if(i<0||i>list.length) {cout<<"输入错误!"<<endl;return;} else {b=list.data[i-1]; for(i=i-1;i<list.length-1;i++) list.data[i]=list.data[i+1]; --list.length; cout<<"需要删除的元素是:"<<b<<endl; cout<<"删除操作完成后的顺序表是:"<<endl; put(list); } } void delete2(sqlist &list)//删除指定数字的函数 { int b; cout<<"输入您想删除的数字:"<<endl; cin>>b; int i,j=0; for(i=0;i<list.length;i++) { if(list.data[i]==b) {j=i+1;break;} } if(j!=0) { for(;i<list.length-2 ;i++) list.data[i]=list.data[i+1]; --list.length; cout<<"该位置是第"<<i<<"位"<<endl; cout<<"删除操作完成后的顺序表是:"<<endl; put(list); } else cout<<"很遗憾,表中没有找到此数字,删除不成功,请重试!"<<endl; } 二、实验程序描述: 主函数如下: int main() { int flag; sqlist l; creatsqlist(l); initsqlist(l); cout<<endl<<"**************************************************************************"<<endl; cout<<"请输入要进行的操作序号:\n"; cout<<"1.插入字符"<<endl<<"2.查找数字"<<endl<<"3.删除第i位数字"<<endl<<"4.删除指定数字"<<endl<<"0.退出"<<endl<<endl; cin>>flag; do { switch(flag) {case 1: insert(l);break; case 2: locateElem(l);break; case 3: delete1(l);break; case 4: delete2(l);break; default: cout<<"请重新输入||代码错误"<<endl;} cout<<"**************************************************************************"<<endl; cout<<"请输入要进行的操作序号:\n"; cout<<"1.插入字符"<<endl<<"2.查找数字"<<endl<<"3.删除第i位数字"<<endl<<"4.删除指定数字"<<endl<<"0.退出"<<endl<<endl; cin>>flag; } while(flag!=0); return 0; } 三、实验结果(输入和输出): 1、输入界面: 2、插入操作: 3、查找操作: 4、删除操作:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服