此代码按照上篇博客线线性表基础概念,顺序表实现将概念用代码实现

#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++实现顺序表基本操作相关推荐

  1. 顺序表基本操作函数总结

    /*************************************************************************************/ /*   顺序表基本操作 ...

  2. PTA第一章作业1--数据结构基本概念 顺序表基本操作

    6-2 顺序表基本操作 (10分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...

  3. 数据结构线性表的逻辑结构(三)顺序表基本操作的实现

    一. 实验目的 1. 掌握线性表的逻辑结构: 2. 顺序表基本操作的实现: 3. 掌握利用C/C++编程语言实现数据结构的编程方法: 4. 通过上机时间加强利用数据结构解决实际应用问题的能力: 二.  ...

  4. 【PTA】6-1 顺序表基本操作(10 分)

    题目来自 网络与信息安全-数据结构作业1-数据结构基本概念 6-1 https://fancyking.ml/archives/71 原题描述 6-1 顺序表基本操作(10 分) 本题要求实现顺序表元 ...

  5. 顺序表基本操作<小白一听就懂!!!><超详细><接地气>

    顺序表基本操作<小白一听就懂!!!><超详细>&&<接地气> ***小编前言*** 完整代码 // 头文件 //主函数 // 初始化 /*运用指针* ...

  6. 6-2 顺序表基本操作 (10 分)

    6-2 顺序表基本操作 (10 分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数. L是一个顺序表, 函数Status ListInsert_Sq(SqList &L ...

  7. 6-2 顺序表基本操作 (10分)

    6-2 顺序表基本操作 (10分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...

  8. 6-1 顺序表基本操作(10 分)

    6-1 顺序表基本操作(10 分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...

  9. 顺序表基本操作实现(详细)

    顺序表的目录 1.顺序表的概念 2. 熟悉顺序表的分类? 3.熟悉顺序表的优缺点 4.动态顺序表的基本操作 4.0包含头文件和结构体 4.1初始化,销毁,扩容 4.2尾插,尾删,头插,头删 4.3任意 ...

  10. 数据结构算法实现-顺序表基本操作

    数据结构算法实现 实现了高一凡的<<数据结构>>,书中的代码是基于VC6++ c++语言实现的,网上也可以找到TC版的c语言实现的源代码,TC版的源代码平台是 Turbo C ...

最新文章

  1. FactoryBean
  2. 结对编程项目的过程记录与收获
  3. 47 Majority Element II
  4. Android 四大组件学习之ContentProvider四
  5. java 数据库 程序_用java编写数据库程序的一般步骤
  6. Request header field x-token is not allowed by Access-Control-Allow-Headers in preflight response.
  7. 《信息系统设计与分析》读书笔记
  8. php 生成电话名片二维码
  9. python 拆分pdf
  10. SpringBoot/SpringMVC整合Shiro:实现登录与注册(MD5加盐加密)
  11. 奥运五环的绘制-进阶
  12. 云服务器对网站用户的优势
  13. 数据结构 | 第十一章:二叉树和其他树 | 【前序遍历】【中序遍历】【后序遍历】【层次遍历】 | 并查集
  14. 不断升级的USB-C接口
  15. [Linux]Ubuntu下chrome中五笔输入法不能通过shift切换中英文
  16. MATLAB绘制概率密度函数
  17. 2021-06-21解决列表查询很慢的优化SQL定位查询慢原因优化
  18. GPS定位与IP地址定位
  19. Unity 实战项目 ☀️| 只用一个脚本做一个 刮刮乐 案例,一不小心刮出来一个女朋友!【学习娱乐一下】
  20. android 设置自定义主题及切换方案

热门文章

  1. Oracle调优之Hint用法整理笔记
  2. TFN FT-7光纤熔接机 高性价比的干线机器 性能不输进口机器!
  3. ICCV2021 | 单目3D目标检测框架GUPNet解析
  4. 360急速浏览器的不能正常访问phpstudy的虚拟站点
  5. mysql hints
  6. float, double数值范围及计算方式
  7. Java继承和多态--笔记本USB接口案例
  8. wsdl和wadl区别(转)
  9. 【我的渲染技术进阶之旅】OpenGL ES 使用表面剔除和深度测试解决渲染3D模型的时候,出现背面黑点的问题
  10. 阿里云蔡英华:云智一体,让产业全面迈向智能