C++小白学习笔记——代码案例(3)
2021/10/2 17:11:40
本文主要是介绍C++小白学习笔记——代码案例(3),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、顺序表的 “一条龙”:构造、初始化、查找、删除、插入
#include<stdlib.h> #include<stdio.h> #include<iostream> using namespace std; #define OK 1 #define OVERFLOW -2 #define ERROR 0 typedef int Status; //数据元素的类型 就是给int换个名(Status = int) typedef int ElemType; //数据元素的类型 ElemType = int #define MAXSIZE 100 //最大长度(给常量取别名) typedef struct { ElemType *elem; int length; }SqList;//无名结构体取别名 //构造一个空的顺序表L,其实就是一个函数 Status InitList (SqList &L) { L.elem = new ElemType[MAXSIZE]; //为顺序表分配空间 if(!L.elem) exit(OVERFLOW); //存储分配失败 L.length = 0; //空表长度为0 return OK; } //输出顺序表L Status ShowList(SqList L) { int i; cout<<"顺序表为:"; for(i = 0; i < L.length; i++) cout<<L.elem[i]<<"\t"; } ElemType GetElem2(SqList L,int i) { if (i<1||i>L.length) //判断i值是否合理,若不合理,返回ERROR return ERROR; ElemType e = L.elem[i-1]; //第i-1的单元存储着第i个数据 return e; } Status GetElem(SqList L,int i,ElemType &e)//多了一个引用 { if (i<1||i>L.length)//判断i值是否合理,若不合理,返回ERROR return ERROR; e=L.elem[i-1]; //第i-1的单元存储着第i个数据 return OK; } //查找 int LocateELem(SqList L,ElemType e) { int i; for (i = 0; i < L.length; i++) if (L.elem[i]==e) return i+1; // +1易掉 return 0; } //插入 Status ListInsert(SqList &L,int i ,ElemType e) { int j; if(i<1 || i>L.length+1) return ERROR; //i值不合法 if(L.length==MAXSIZE) return ERROR; //当前存储空间已满(满了就不能后移) for(j = L.length-1; j >= i - 1; j--) L.elem[j+1]=L.elem[j]; //插入位置及之后的元素后移 L.elem[i-1]=e; //将新元素e放入第i个位置 ++L.length; //表长增1(易掉) return OK; } //删除 Status ListDelete(SqList &L,int i) { int j; if((i<1)||(i>L.length)) return ERROR; //i值不合法 for (j = i; j <= L.length - 1; j++) L.elem[j-1]=L.elem[j]; //被删除元素之后的元素前移 --L.length; //表长减1(易掉) return OK; } Status ListDelete2(SqList &L,int i,ElemType &e) { int j; if((i<1)||(i>L.length)) return ERROR; //i值不合法 e=L.elem[i-1]; for (j=i;j<=L.length-1;j++) L.elem[j-1]=L.elem[j]; //被删除元素之后的元素前移 --L.length; //表长减1 return OK; } int main() { int n,j,a,b,y; SqList x; InitList (x);//初始化 cout<<"请输入元素个数: "; cin>>n; cout<<"请输入元素: "<<endl; for(int i = 0; i < n; i++) { cin>>x.elem[i]; x.length++; } ShowList(x); cout<<endl; cout<<"请输入要查找的值:"; cin>>n; j=LocateELem(x,n); cout<<"查找值的位置是:"<<j<<endl; cout<<endl; cout<<"请输入要插入元素的位置和数值:"<<endl; cin>>a>>b; ListInsert(x,a,b); ShowList(x); cout<<endl<<endl; cout<<"请输入要指定删除元素的位置:"; cin>>y; ListDelete(x,y); ShowList(x); return 0; }
【注】
//灰色的代码是无名结构体,整块代码是在给无名结构体取别名
这篇关于C++小白学习笔记——代码案例(3)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享
- 2024-11-22ansible 的archive 参数是什么意思?-icode9专业技术文章分享
- 2024-11-22ansible 中怎么只用archive 排除某个目录?-icode9专业技术文章分享
- 2024-11-22exclude_path参数是什么作用?-icode9专业技术文章分享
- 2024-11-22微信开放平台第三方平台什么时候调用数据预拉取和数据周期性更新接口?-icode9专业技术文章分享
- 2024-11-22uniapp 实现聊天消息会话的列表功能怎么实现?-icode9专业技术文章分享
- 2024-11-22在Mac系统上将图片中的文字提取出来有哪些方法?-icode9专业技术文章分享
- 2024-11-22excel 表格中怎么固定一行显示不滚动?-icode9专业技术文章分享
- 2024-11-22怎么将 -rwxr-xr-x 修改为 drwxr-xr-x?-icode9专业技术文章分享
- 2024-11-22在Excel中怎么将小数向上取整到最接近的整数?-icode9专业技术文章分享