c++简单编写线性表(实验)
哇 好久没更博客了 因为从上次更文到现在为止,我一直在学c#,然后也觉得没什么太大的东西想写在博客上,
总之这次就简单的传一下学校安排的数据结构的实验,我还是学生,是新手,希望能继续跟大家一起学习,
共勉,有错望指出,这样就可以不断学习,谢谢。
*******这次实验是第一个实验,名称是线性表操作,我就结合我所学的写一下。********
*******线性表的概念我就不多提了,直接上代码,简单粗暴。********
*******线性表操作我写有了 初始化 判断为空 判断为满 插入 追加 删除 销毁 遍历等操作********
代码如下:
# include<iostream>
# include<stdlib.h>
using namespace std;
typedef struct Arr
{
int * pBase; //存储空间的基地址
int len; //当前顺序表所能容纳的最大长度
int cnt; //当前顺序表的有效长度
} Shun;
void csh(Shun & pArr,int len);//功能:初始化顺序表
bool append(Shun & pArr,int val);//功能:往顺序表中追加元素
bool isempty(Shun & pArr);//功能:判断顺序表是否为空
bool isfull(Shun & pArr);//功能:判断顺序表是否为满
bool Insert(Shun & pArr,int pos,int val);//功能:在指定位置插入一个元素
void Show(Shun & pArr);//功能:遍历整个顺序表并打印
bool Delete(Shun & pArr,int pos);//功能:删除顺序表指定位置的元素
bool xh(Shun & pArr);//功能:销毁顺序表
int main(void)
{
Shun biao; //声明一个顺序表
csh(biao,10); //初始化该顺序表并赋予10单位的长度
cout<<"往顺序表里追加(增加)5个元素,追加后的结果如以下所示:"<<endl;
append(biao,1);
append(biao,5);
append(biao,87);
append(biao,12);
append(biao,100);
Show(biao);
cout<<"删除第3个元素,删除后的结果如以下所示:"<<endl;
Delete(biao,3);
Show(biao);
cout<<"往第2个位置插入一个值“520”,插入后的结果如以下所示:"<<endl;
Insert(biao,2,520);
Show(biao);
if(xh(biao))
cout<<"已销毁成功!!"<<endl;
else
cout<<"销毁出错!!"<<endl;
return 0;
}
void csh(Shun & pArr,int len)
{
pArr.pBase = new int[len];
if(!pArr.pBase)
exit(-1);
pArr.len=len;
pArr.cnt=0;
}
bool isempty(Shun & pArr)
{
if(0==pArr.cnt)
return true;
else
return false;
}
bool isfull(Shun & pArr)
{
if(pArr.len==pArr.cnt)
return true;
else
return false;
}
void Show(Shun & pArr)
{
if(isempty(pArr))
cout<<"顺序表为空!!"<<endl;
else
{
for(int i=0; i<pArr.cnt; i++)
{
cout<<pArr.pBase[i]<<" ";
}
cout<<endl;
}
}
bool append(Shun & pArr,int val)
{
if(isfull(pArr))
return false;
else
{
pArr.pBase[pArr.cnt++]=val;
return true;
}
}
bool Insert(Shun & pArr,int pos,int val)
{
if(isfull(pArr))
return false;
if(pos<1||pos>pArr.cnt+1)
return false;
if(pos<=pArr.cnt)
{
for(int i=pArr.cnt-1; i>=pos-1; i--)
{
pArr.pBase[i+1]=pArr.pBase[i];
}
}
pArr.pBase[pos-1]=val;
pArr.cnt++;
return true;
}
bool Delete(Shun & pArr,int pos)
{
if(isempty(pArr))
return false;
if(pos<0||pos>pArr.cnt)
return false;
for(int i=pos; i<pArr.cnt; i++)
{
pArr.pBase[i-1]=pArr.pBase[i];
}
pArr.cnt--;
return true;
}
bool xh(Shun & pArr)
{
if(pArr.pBase==NULL)
return false;
delete pArr.pBase;
pArr.pBase=NULL;
return true;
}
效果图如下:

******共勉******
c++简单编写线性表(实验)的更多相关文章
- c语言描述简单的线性表,获取元素,删除元素,
//定义线性表 #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; //这是数组的长度, ...
- C++编程练习(1)----“实现简单的线性表的顺序存储结构“
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素. 故可以用数组来实现顺序存储结构. 用C++编写的利用数组实现简单的读取.插入和删除功能的线性表. #include< ...
- C++编程练习(2)----“实现简单的线性表的链式存储结构“
单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素. 对于查找操作,单链表的时间复杂度为O(n). 对于插入和删除操作,单链表在确定位置后,插入和删除时间仅为O(1). 单链表不需要分配存储 ...
- 线性表的顺序存储结构——java
线性表的顺序存储结构:是指用一组地址连续的存储单元一次存放线性表的元素.为了使用顺序结构实现线性表,程序通常会采用数组来保存线性中的元素,是一种随机存储的数据结构,适合随机访问.java中ArrayL ...
- javascript实现数据结构:线性表--简单示例及线性表的顺序表示和实现
线性表(linear list)是最常用且最简单的一种数据结构.一个线性表是n个数据元素的有限序列.在稍复杂的线性表中,一个数据元素可以由若干个数据项(item)组成. 其中: 数据元素的个数n定义为 ...
- 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除。(C语言)
/* 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除 */ #include <stdio.h> #include <stdlib.h> typedef st ...
- 【线性表基础】基于线性表的简单算法【Java版】
本文描述了基于线性表的简单算法及其代码[Java实现] 1-1 删除单链表中所有重复元素 // Example 1-1 删除单链表中所有重复元素 private static void removeR ...
- c++实验3 链式存储线性表
1.线性表链式存储结构及基本操作算法实现 (1)单链表存储结构类的定义: #include <iostream> using namespace std; template <cla ...
- c++实验2 顺序存储线性表
线性表顺序存储 实现了动态数组的增删改查 前驱后继 A=AUB 动态数组右移 (1)顺序表存储结构的定义(类的声明): class SeqList { protected: DataType *l ...
随机推荐
- HDU4027 Can you answer these queries?(线段树 单点修改)
A lot of battleships of evil are arranged in a line before the battle. Our commander decides to use ...
- ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释
IdentityServer4 术语 IdentityServer4的规范.文档和对象模型使用了一些你应该了解的术语. 身份认证服务器(IdentityServer) IdentityServer是一 ...
- 使用CXF 2.7.5出现的java.lang.RuntimeException: Cannot create a secure XMLInputFactory错误解决
昨天启动工程测试webservice服务,结果发现服务一调用就报java.lang.RuntimeException: Cannot create a secure XMLInputFactory j ...
- linux-mkdir
mkdir mkdir : 可以用来创建目录,如果不加创建路径即在本路径下创建一个新的指定的目录,否则即在给出的路径下创建目录. 目录创建:目录名尽量见名知意,根据不同需要分层创建,尽量避免在同一目录 ...
- Excel 生成SQL
'"&A21&"' Excel 中要做字符串连接 "& + 单元格地址 + &", 如果单纯做测试在某个单元格中测试输出内容 ...
- 2000W条数据,加入全文检索的总结
一) 前期准备测试: 旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息 ...
- Python程序员去上海工作有多难?
我只能说,也要看你掌握的技术可以打多少分.技术熟练度跟找工作的难易程度是成正比的:你掌握得越好,找工作就越容易(难度系数越低):反之越高. Python程序员这种技术类的工作岗位,当然还是要有扎实的技 ...
- python的Windows下的安装
1.先打开网址http://www.python.org/download/: 2.在下载列表中选择Window平台安装包, 找到最后 web-based installer 是需要通过联网完成安装的 ...
- Django总结
Django 中提供了开发网站经常用到的模块,常见的代码都为你写好了,通过减少重复的代码,Django 使你能够专注于 web 应用上有 趣的关键性的东西.为了达到这个目标,Django 提供了通用W ...
- 《Metasploit魔鬼训练营》虚拟环境搭建中网络配置的一些问题
直接使用网上下载与书本配套的虚拟机环境,发现NAT服务器10.10.10.254(192.168.10.254)虽然可以和其他虚拟机ping通,但是连不上网.自然windows xp靶机也连不上网了. ...