提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
建一个书本的序号(coef)、价格(expn)的顺序表,以及输入、输出、增、删、改、查、插入等操作。
目录
- typedef struct
- {
- float coef;
- int expn;
- }book;
- typedef struct {
- book *elem; //存储空间的基地址
- int length; //当前长度
- } SqList;
-
- Status InitList(SqList &L) { //算法2.1 顺序表的初始化
- //构造一个空的顺序表L
-
-
- L.elem = new book[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
- if (!L.elem)
- exit(OVERFLOW); //存储分配失败退出
- //(必须先开闭空间,不然直接输入没有结果)
- L.length = 0; //输入; (直接在里面创建输入)
- int i,n;
- cout<<"请输入n的值(个数):"<
- cin>>n;
- cout<<"请输入他们的值:(序号和价格)"<
- for(int i=0;i
- {
- cin>>L.elem[i].expn>>L.elem[i].coef;
- L.length++;
- }
- return OK;
- }
- //void shuru(SqList &L,int a){//手动输入 //也可以先建好空间,再在外面创建函数输入;
- /// int i;
- /// cin >>L.elem[i].coef>>L.elem[i].expn;
- /// L.length=a;//更新线性表的长度
- //cout <<"输入成功" <
- //cout <
- //}
三、顺序表的取值
- Status GetElem(SqList L, int i, book &e) {//算法2.2 顺序表的取值
- if(i<1||i>L.length ) return ERROR;
- e=L.elem[i-1] ;
- cout<
" "< - return OK;
- }
四、顺序表的查找
- Status LocateElem(SqList L,book e)//查找
- {
- for(int i=0;i
- if(L.elem[i].expn==e.expn) return i+1;
- return 0;
- }
五、顺序表的插入
- Status ListInsert(SqList &L, int i, book e) { //算法2.4 顺序表的插入
- //在顺序表L中第i个位置之前插入新的元素e
- //i值的合法范围是1<=i<=L.length+1
- if((i<1)||(i>L.length +1)) return ERROR;
- if(L.length ==MAXSIZE)return ERROR;
- for(int j=L.length -1;j>=i-1;j--)
- L.elem[j+1]=L.elem [j];
- L.elem[i-1]=e;
- ++L.length ;
- return OK;
- }
六、顺序表的删除
- Status ListDelete(SqList &L, int i) { //算法2.5 顺序表的删除
- //在顺序表L中删除第i个元素,并用e返回其值
- //i值的合法范围是1<=i<=L.length
-
- //TODO
-
- if((i<1)||(i>L.length ))return ERROR;
- for(int j=i;j<=L.length -1;j++)
- L.elem[j-1]=L.elem [j];
- --L.length ;
- return OK;
-
- }
七、顺序表的输出
-
- void VisitList(SqList L)//输出
- {
- int i;
- cout<<"序号"<<" "<<"价格"<
- for(i=0;i
-
- {
- cout<
" "< - cout<
- }
- }
全部代码:
- #include
- #include
- #include
- #include
- #include
- using namespace std;
- #define OK 1
- #define ERROR 0
- #define OVERFLOW -2
- typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。
- typedef int ElemType; //ElemType 为可定义的数据类型,此设为int类型
- #define MAXSIZE 100 //顺序表可能达到的最大长度
- typedef struct
- {
- float coef;
- int expn;
- }book;
- typedef struct {
- book *elem; //存储空间的基地址
- int length; //当前长度
- } SqList;
-
- Status InitList(SqList &L) { //算法2.1 顺序表的初始化
- //构造一个空的顺序表L
-
-
- L.elem = new book[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间
- if (!L.elem)
- exit(OVERFLOW); //存储分配失败退出
- //(必须先开闭空间,不然直接输入没有结果)
- L.length = 0; //输入; (直接在里面创建输入)
- int i,n;
- cout<<"请输入n的值(个数):"<
- cin>>n;
- cout<<"请输入他们的值:(序号和价格)"<
- for(int i=0;i
- {
- cin>>L.elem[i].expn>>L.elem[i].coef;
- L.length++;
- }
- return OK;
- }
- //void shuru(SqList &L,int a){//手动输入 //也可以先建好空间,再在外面创建函数输入;
- /// int i;
- /// cin >>L.elem[i].coef>>L.elem[i].expn;
- /// L.length=a;//更新线性表的长度
- //cout <<"输入成功" <
- //cout <
- //}
- Status GetElem(SqList L, int i, book &e) {//算法2.2 顺序表的取值
- if(i<1||i>L.length ) return ERROR;
- e=L.elem[i-1] ;
- cout<
" "< - return OK;
- }
- Status LocateElem(SqList L,book e)//查找
- {
- for(int i=0;i
- if(L.elem[i].expn==e.expn) return i+1;
- return 0;
- }
- Status ListInsert(SqList &L, int i, book e) { //算法2.4 顺序表的插入
- //在顺序表L中第i个位置之前插入新的元素e
- //i值的合法范围是1<=i<=L.length+1
- if((i<1)||(i>L.length +1)) return ERROR;
- if(L.length ==MAXSIZE)return ERROR;
- for(int j=L.length -1;j>=i-1;j--)
- L.elem[j+1]=L.elem [j];
- L.elem[i-1]=e;
- ++L.length ;
- return OK;
- }
- Status ListDelete(SqList &L, int i) { //算法2.5 顺序表的删除
- //在顺序表L中删除第i个元素,并用e返回其值
- //i值的合法范围是1<=i<=L.length
-
- //TODO
-
- if((i<1)||(i>L.length ))return ERROR;
- for(int j=i;j<=L.length -1;j++)
- L.elem[j-1]=L.elem [j];
- --L.length ;
- return OK;
-
- }
-
- void VisitList(SqList L)//输出
- {
- int i;
- cout<<"序号"<<" "<<"价格"<
- for(i=0;i
-
- {
- cout<
" "< - cout<
- }
- }
-
-
- int main()
- {SqList S;
- //int a;
- book e;
- InitList(S) ;
- cout<<"输出顺序表的全部值:"<
- VisitList(S);
- cout<<"查找,这里取的是序号expn,(奇数位)";
- cin>>e.expn;//关键点,需要给值 LocateElem(S,e)中的;
- if(LocateElem(S,e)==0)
- cout<<"没有找到e"<
- else
- cout<<"找到了e,位置在:" << LocateElem(S,e)<
- cout<<"取值,输出第二个expn:";
- GetElem(S,2,e);
- cout<<"请输入插入第二位置的值(序号和价格)";
- cin>>e.expn>>e.coef;
- ListInsert(S,2,e);
- cout<<"结果为" <
- VisitList(S);
- cout<<"删除第二个数据"<
- ListDelete(S,2);
- cout<<"结果为"<
- VisitList(S);
- cout<<"数据表的长度为:";
- cout<
- return OK;
- }
-
结果:
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了建一个书本的序号(coef)、价格(expn)的顺序表,以及输入、输出、增、删、改、查、插入等操作
-
相关阅读:
详细说明static关键字,各种使用场景以及作用
中转服务器是干嘛的?
国际财务系统基于ShardingSphere的数据分片和一主多从实践
uni-upgrade-center 升级中心详细流程
C++ 构造函数
学习pytorch7 神经网络的基本骨架--nn,module的使用
CAS详解
STL中最常见的三种容器vector、list、map对比分析
学生HTML个人网页作业作品:HTML绿色的化妆品静态网站(web前端网页制作课作业)
基于 nodejs+vue旅游推荐系统 mysql
-
原文地址:https://blog.csdn.net/m0_65420451/article/details/126921316