C++实现顺序表基本操作
此代码按照上篇博客线线性表基础概念,顺序表实现将概念用代码实现
#include<stdio.h>
#include<iostream>using namespace std;//函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
//Status 是函数的类型,其值是函数结果状态代码typedef int Status; // Status 相当于 int
typedef char ElemType; //Elemtype 相当于 char #define MAXSIZE 100 //线性表存储空间的初始分配量
typedef struct
{ElemType *elem; //存储空间的基地址int length; //当前长度
}SqList; //顺序表类型名称为Sqlist Status InitList(SqList &L); //初始化操作,建立一个空的线性表L void DestroyList(SqList &L); //销毁线性表L void ClearList(SqList &L); //清空线性表L int ListEmpty(SqList L); //判断线性表L是否为空表 int ListLength(SqList L); //返回线性表L中的数据元素个数Status GetElem(SqList L,int i,ElemType &e); //用e返回线性表L中第i个元素 Status LocateElem(SqList L,ElemType e); //返回L中第1个值与e相同的元素在L中的位置。若这样的元素不存在,则返回值为0Status ListInsert(SqList &L,int i,ElemType e); //在线性表L的第i个位置插入元素e Status ListDelete(SqList &L,int i,ElemType &e); //删除线性表L中第i个元素并用e返回 void ListTraversals(SqList &L); //对线性表L进行遍历,在遍历过程中对L的每个结点访问一次int main(){SqList L; //创建线性表L if(InitList(L))cout << "线性表L创建成功" << endl;// ListInsert(L,1,'1'); if(ListInsert(L,1,'s')) //在线性表第一个位置里放入元素cout << "插入成功" << endl;elsecout << "插入失败" << endl;// ListInsert(L,2,'m');if(ListInsert(L,2,'m'))cout << "插入成功" << endl;elsecout << "插入失败" << endl; // ListInsert(L,3,'h');if(ListInsert(L,3,'h'))cout << "插入成功" << endl;elsecout << "插入失败" << endl; cout << "遍历线性表:" << endl;ListTraversals(L);cout << "线性表长度:" << ListLength(L) << endl; ElemType e; ListDelete(L, 1, e);cout << "被删除的元素:" << e << endl;cout << "被删除后线性表的长度:" << ListLength(L) << endl;ElemType a='m';int aa=LocateElem(L,a);cout << "该元素" << a << "在表中序号为:" << aa << endl;GetElem(L,1,e);cout << "线性表L第一个元素:" << e << endl;cout << "清空线性表" << endl; ClearList(L);ListEmpty(L);if(ListEmpty(L))cout << "线性表为空" << endl;elsecout << "线性表非空" << endl;DestroyList(L);cout << "线性表已销毁" << endl; return 0;
} Status InitList(SqList &L) //构造一个空的顺序表L
{L.elem = new ElemType[MAXSIZE]; //为顺序表分配空间if(!L.elem) exit(OVERFLOW) ; //存储分配失败L.length=0; //空表长度为0return OK;}void DestroyList(SqList &L){if(L.elem)delete L.elem; //释放存储空间
} void ClearList(SqList &L){L.length=0; //将线性表的长度设置为0
} int ListEmpty(SqList L){if (L.length == 0) return 1;else return 0;
}int ListLength(SqList L){return (L.length); //调用SqList结构里length
}Status GetElem(SqList L ,int i ,ElemType &e)
{if(i < 1 || i > L.length) return ERROR; //判断i值是否合理e=L.elem[i-1]; //elem[i-1]存储第i个数据元素return OK;}Status LocateElem(SqList L,ElemType e) //在线性表L中查找值为e的数据元素,返回其序号(是第几个元素)
{for(int i=0 ;i<L.length ;i++)if(L.elem[i] == e) return i+1; //查找成功,返回序号i+1return 0; //查找失败,返回0}Status ListInsert(SqList &L,int i,ElemType e)
{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; //将新元素 e 放入第 i 个位置++L.length; //表长加1return OK;}Status ListDelete(SqList &L,int i, ElemType &e)
{if( (i<1) || (i>L.length) ) return ERROR;e = L.elem[i-1];for(int j=i ;j<=L.length-1 ;j++)L.elem[j-1]=L.elem[j]; //被删除元素之后的元素前移--L.length; //表长减1return OK;}void ListTraversals(SqList &L){ //遍历一遍 for(int i=0;i<L.length;i++){cout << L.elem[i] << endl;}
}
C++实现顺序表基本操作相关推荐
- 顺序表基本操作函数总结
/*************************************************************************************/ /* 顺序表基本操作 ...
- PTA第一章作业1--数据结构基本概念 顺序表基本操作
6-2 顺序表基本操作 (10分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...
- 数据结构线性表的逻辑结构(三)顺序表基本操作的实现
一. 实验目的 1. 掌握线性表的逻辑结构: 2. 顺序表基本操作的实现: 3. 掌握利用C/C++编程语言实现数据结构的编程方法: 4. 通过上机时间加强利用数据结构解决实际应用问题的能力: 二. ...
- 【PTA】6-1 顺序表基本操作(10 分)
题目来自 网络与信息安全-数据结构作业1-数据结构基本概念 6-1 https://fancyking.ml/archives/71 原题描述 6-1 顺序表基本操作(10 分) 本题要求实现顺序表元 ...
- 顺序表基本操作<小白一听就懂!!!><超详细><接地气>
顺序表基本操作<小白一听就懂!!!><超详细>&&<接地气> ***小编前言*** 完整代码 // 头文件 //主函数 // 初始化 /*运用指针* ...
- 6-2 顺序表基本操作 (10 分)
6-2 顺序表基本操作 (10 分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数. L是一个顺序表, 函数Status ListInsert_Sq(SqList &L ...
- 6-2 顺序表基本操作 (10分)
6-2 顺序表基本操作 (10分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...
- 6-1 顺序表基本操作(10 分)
6-1 顺序表基本操作(10 分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...
- 顺序表基本操作实现(详细)
顺序表的目录 1.顺序表的概念 2. 熟悉顺序表的分类? 3.熟悉顺序表的优缺点 4.动态顺序表的基本操作 4.0包含头文件和结构体 4.1初始化,销毁,扩容 4.2尾插,尾删,头插,头删 4.3任意 ...
- 数据结构算法实现-顺序表基本操作
数据结构算法实现 实现了高一凡的<<数据结构>>,书中的代码是基于VC6++ c++语言实现的,网上也可以找到TC版的c语言实现的源代码,TC版的源代码平台是 Turbo C ...
最新文章
- FactoryBean
- 结对编程项目的过程记录与收获
- 47 Majority Element II
- Android 四大组件学习之ContentProvider四
- java 数据库 程序_用java编写数据库程序的一般步骤
- Request header field x-token is not allowed by Access-Control-Allow-Headers in preflight response.
- 《信息系统设计与分析》读书笔记
- php 生成电话名片二维码
- python 拆分pdf
- SpringBoot/SpringMVC整合Shiro:实现登录与注册(MD5加盐加密)
- 奥运五环的绘制-进阶
- 云服务器对网站用户的优势
- 数据结构 | 第十一章:二叉树和其他树 | 【前序遍历】【中序遍历】【后序遍历】【层次遍历】 | 并查集
- 不断升级的USB-C接口
- [Linux]Ubuntu下chrome中五笔输入法不能通过shift切换中英文
- MATLAB绘制概率密度函数
- 2021-06-21解决列表查询很慢的优化SQL定位查询慢原因优化
- GPS定位与IP地址定位
- Unity 实战项目 ☀️| 只用一个脚本做一个 刮刮乐 案例,一不小心刮出来一个女朋友!【学习娱乐一下】
- android 设置自定义主题及切换方案