顺序表实验--数组法
来源:互联网 发布:自动编程 编辑:程序博客网 时间:2024/06/16 05:43
老师布置的实验作业,经过自己修改和整理之后做了出来 ,这个代码应该算是非常的简单的了,因为没有用到复杂的的malloc等内存分配,只是用数组进行简单的分配测试。 先贴出来老师的作业: 实验1:顺序表的建立及运算
要求:
1、建立一个顺序表,输入n个元素并输出;
2、查找线性表中的最大元素并输出;
3、在线性表的第i个元素前插入一个正整数x;
4、删除线性表中的第j个元素;
5、将线性表中的元素按升序排列;
*6、将线性表中的元素就地逆序(只允许用一个暂存单元);
然后下面的是我的代码处理方法:
#include <iostream>using namespace std;#define MAXSIZE 100typedef struct { int elem[MAXSIZE]; int len;}sqlist;void show_all(sqlist *L,int n){ int i; L->len = 0; cout<<"顺序表数据为:"<<endl; for(i=0;i<n;i++) { cout<<L->elem[L->len]<<" "; L->len++; } cout<<"\n\n";}void init_list(sqlist *L,int n){ int i; int tmp; L->len = 0; cout<<"请在此输入顺序表值:\n"; for(i=0;i<n;i++) { cin>>tmp; L->elem[L->len]=tmp; L->len++; } cout<<"顺序表建立成功!\n"<<endl; show_all(L,n); }void up_order(sqlist *L){ int i,j; int tmp; for(i=0;i<L->len;i++) { for(j=i+1;j<L->len;j++) { if(L->elem[i]>L->elem[j]) { tmp = L->elem[i]; L->elem[i] = L->elem[j]; L->elem[j] = tmp; } } }}void find_max(sqlist *L){ int i; int tmp = L->elem[0]; for (i=0;i<L->len;i++) { if (tmp < L->elem[i]) { tmp = L->elem[i]; } } cout<<"\n线性表中最大的元素为: "<<tmp<<endl; }void instfirst(sqlist* L,int f){ int i; int m; cout<<"请输入添加数字:\n"; cin>>m; for (i=L->len;i>=f;i--) { L->elem[i] = L->elem[i-1]; } L->elem[f-1] = m; L->len++;}void dele_list(sqlist* L,int f){ int i; for (i=f;i<=L->len;i++) { L->elem[i-1] = L->elem[i]; } L->len--;}void down_order(sqlist* L){ int i,j; int tmp; for(i=0;i<L->len;i++) { for(j=i+1;j<L->len;j++) { if(L->elem[i]<L->elem[j]) { tmp = L->elem[i]; L->elem[i] = L->elem[j]; L->elem[j] = tmp; } } }}void hand(int flag,sqlist* L){ int f; int n; switch(flag) { case 1: find_max(L); break; case 2 : cout<<"请输入您要插入的元素位置:\n"; cin>>f; if ((f<1)||(f>L->len)) { cout<<"输入位置错误!\n"; break; } instfirst(L,f); n = L->len; show_all(L,n); break; case 3 : cout<<"请输入您要删除的元素位置:\n"; cin>>f; if ((f==0)||(f>L->len)) { cout<<"输入位置错误!\n"; break; } dele_list(L,f); n = L->len; show_all(L,n); break; case 4 : up_order(L); n = L->len; show_all(L,n); break; case 5: down_order(L); n = L->len; show_all(L,n); break; default: break; }}void menu(sqlist *L){ int n,flag; cout<<"***************************\n"; cout<<"*******链表实验系统********\n"; cout<<"***************************\n\n"; cout<<"请输入您想建立的链表的个数\n"; cin>>n; if((n>MAXSIZE)&&(n<1)) cout<<"数值错误,请重新输入:输入范围(1~100)"; init_list(L,n); for(;;) { cout<<"*******************************\n"; cout<<"*******链表实验测试菜单********\n"; cout<<"*******************************\n\n"; cout<<"*****1.查找链表中最大元素********\n"; cout<<"*****2.插入正整数x **************\n"; cout<<"*****3.删除第j个元素*************\n"; cout<<"*****4.线性表升序排列************\n"; cout<<"*****5.线性表降序排列************\n"; cout<<"*****6.退出程序******************\n"; cin>>flag; if (flag == 6) break; hand(flag,L); }}int main(){ sqlist L; menu(&L); return 0;}
代码的结构和健壮程度上面都比较的简单,但是方便老师的检测。 还有最后的第六点,不知道符不符合老师作业要求。
阅读全文
0 0
- 顺序表实验--数组法
- 实验二顺序表
- 顺序表--数据结构实验
- 数据结构顺序表实验
- 实验一:顺序表
- 实验一:顺序表
- 实验二.顺序表
- 实验二顺序表
- 实验二 顺序表
- 实验二------顺序表
- 【实验二】顺序表实验验证
- 实验一:顺序表实验报告
- 实验一 顺序表实现
- 数据结构实验--顺序表操作
- 实验二之顺序表
- 实验二(顺序表)
- 实验二之顺序表
- 顺序表--数组
- Linux文件权限
- maven-小白入门学习笔记2
- java提高篇(四)-----抽象类与接口
- http://www.cnblogs.com/pinard/p/5970503.html
- 鼠标事件
- 顺序表实验--数组法
- 微信公众号支付开发中所遇到的坑
- 动态代理VS静态代理
- 关于对象序列化与反序列化的那些事
- 数据库事务的四大特性以及事务的隔离级别
- 过滤器Filter
- Redis-初始
- 习题 7.3 写一个判素数的函数,在主函数输入一个整数,输出是否为素数的信息。
- 简单socket编程