数据结构C++实现代码-顺序表
参考:https://blog.csdn.net/ebowtang/article/details/43094041
//seqList.h//
//包含顺序表中的声明// #include<iostream>
template<typename DataType>
class SeqList
{
public:
SeqList(int size = defaultSize)
{
if (size > )
{
maxSize = size;
length = ;
elements = new DataType[maxSize];
for (int i = ; i < maxSize; i++)
{
elements[i] = NULL;
} }
else
{
cout << "Error Length of SeqList!" << endl; }
}
~SeqList()
{
//delete[] elements;
}
bool InsertElement(DataType data);
DataType GetElement(int location);
bool DelElement(int location);
bool ChangeElement(int location, DataType data);
bool PrintList();
int FindElement(DataType data);
bool isEmpty(SeqList L);
bool InitList(int nLen);
void ClearList(SeqList *L);
void DestroyList();
void ConverseList();
int getLength()
{
return length;
}
private:
static const int defaultSize = ;
DataType *elements;
int maxSize;
int length;
};
//seqList.cpp//
//包含顺序表中主要函数功能的具体实现//
#include<iostream>
#include"seqList.h"
template <typename DataType>
bool SeqList<DataType>::InsertElement(DataType data)
{
int curIndex = length;
if (length >= maxSize)
{
return false;
}
else
{
elements[curIndex] = data;
length++;
return true;
}
} template <typename DataType>
bool SeqList<DataType>::InitList(int nLen)
{
DataType nchar = 'A';
for (int i = ; i < nLen; i++)
{
InsertElement(nchar++);
}
return true;
}
template <typename DataType>
DataType SeqList<DataType>::GetElement(int location)
{
if (location< || location>length)
{
std::cout << "参数无效" << std::endl;
return ;
}
else
{
return elements[location];
}
}
template <typename DataType>
bool SeqList<DataType>::DelElement(int location)
{
if (location< || location >length)
{
std::cout << "参数无效" << std::endl;
return false;
}
else
{
int j = ;
for (int i = location; i < length; i++)
{
elements[location + j - ] = elements[location + j];
j++;
}
length--;
return true;
}
}
template <typename DataType>
bool SeqList<DataType>::ChangeElement(int location, DataType data)
{
if (location< || location>length)
{
std::cout << "参数无效" << std::endl;
return false;
}
else
{
elements[location - ] = data;
return true;
}
} template <typename DataType>
bool SeqList<DataType>::PrintList()
{
for (int i = ; i < length; i++)
std::cout << GetElement(i) << " ";
std::cout<< endl;
return true;
}
template <typename DataType>
int SeqList<DataType>::FindElement(DataType data)
{
for (int i = ; i < length; i++)
{
if (elements[i] == data)
{
return i;
}
}
std::cout << "没有更改元素" << std::endl;
return ;
} template <typename DataType>
bool SeqList<DataType>::isEmpty(SeqList<DataType> L)
{
if (L.length == )
return true;
else
return false;
}
template <typename DataType>
void SeqList<DataType>::ClearList(SeqList *L)
{
for (int i = ; i < length; i++)
elements[i] = ;
L->length = ;
L->maxSize = ;
}
template <typename DataType>
void SeqList<DataType>::DestroyList()
{
length = ;
maxSize = ;
delete[] elements;
elements = NULL;
}
template <typename DataType>
void SeqList<DataType>::ConverseList()
{
for (int i = ; i < length / ; i++)
{
DataType temp;
temp = elements[i];
elements[i] = elements[length - - i];
elements[length - i - ] = temp;
}
}
//main.cpp//
#include "seqList.cpp"
#include "windows.h"
using namespace std;
typedef char Mytype;
int main(int argc, char* argv[])
{
int nLen = ;
cout << "请输入顺序表的长度: ";
cin >> nLen;
SeqList<Mytype>list(nLen);
list.InitList(nLen);
cout << "初始化后的内容为l(亲,萌妹纸自动帮您完成的哦!!!)" << endl;
list.PrintList();
int nPos = ;
cout << "你想删除的那个位置的元素(位置从1开始算起)";
cin >> nPos;
while (true)
{
if (nPos > list.getLength())
{
cout << "输入过大,重新输入(位置从1开始算起)" << endl;
cin >> nPos;
}
else
{
break;
}
}
list.DelElement(nPos);
list.PrintList();
cout << "现在顺序表的长度为: " << endl;
cout << list.getLength() << endl;
Mytype mchar = '';
int nPos1 = ;
char ans = 'n';
do
{
cout << "请输入您想改变的指定位置和相应元素(示例:“k 5”)";
cin >> mchar >> nPos1;
list.ChangeElement(nPos1, mchar);
cout << "继续修改?(Y/N)" << endl;
cin >> ans;
} while (ans == 'y' || ans == 'Y');
cout << "更改后的顺序表为: " << endl;
list.PrintList();
cout << "执行逆序: " << endl;
list.ConverseList();
list.PrintList();
Mytype bchar = '';
cout << "请输入您想查找的元素: ";
cin >> bchar;
int npos2 = list.FindElement(bchar);
cout << "您查找的元素的位置为:" << endl;
cout << npos2 << endl;
list.ClearList(&list);
if (list.isEmpty(list) == true)
{
cout << "顺序表已被清空" << endl; }
else
{
cout << "顺序表还原元素" << endl; }
cout << "5秒后执行销毁命令....................." << endl;
Sleep();
cout << "4秒后执行销毁命令....................." << endl;
Sleep();
cout << "3秒后执行销毁命令....................." << endl;
Sleep();
cout << "2秒后执行销毁命令....................." << endl;
Sleep();
cout << "1秒后执行销毁命令....................." << endl;
Sleep();
cout << "再见,谢谢....................." << endl;
list.DestroyList();
system("PAUSE");
return ;
}
代码运行结果图:

2018-04-2211:13:09
数据结构C++实现代码-顺序表的更多相关文章
- C:数据结构与算法之顺序表
顺序表作为数据结构的开端,说明这里面很多基础要学,初学者一开始都会混淆,今天我们来一步一步来建立一个完整的顺序表,可以任我们控制的顺序表,首先先定义一个顺序表 /* Note:Your choice ...
- 【数据结构 Python & C++】顺序表
用C++ 和 Python实现顺序表的简单操作 C++代码 // Date:2019.7.31 // Author:Yushow Jue #include<iostream> using ...
- 《数据结构》2.2顺序表(sequence list)
//顺序表节点的定义 typedef struct { datatype data[MAXSIZE]; //数组容量的上限 int len; //记录最后一个元素的位置,相当于一个指针,表空时len= ...
- python基础下的数据结构与算法之顺序表
一.什么是顺序表: 线性表的两种基本的实现模型: 1.将表中元素顺序地存放在一大块连续的存储区里,这样实现的表称为顺序表(或连续表).在这种实现中,元素间的顺序关系由它们的存储顺序自然表示. 2.将表 ...
- 数据结构与算法之顺序表C语言实现
顺序表等相关概念请自行查阅资料,这里主要是实现. 注: 1.顺序表C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简单函数,可自行添加功能: 4.可用C+ ...
- 《数据结构》C++代码 邻接表与邻接矩阵
上一篇“BFS与DFS”写完,突然意识到这个可能偏离了“数据结构”的主题,所以回来介绍一下图的存储:邻接表和邻接矩阵. 存图有两种方式,邻接矩阵严格说就是一个bool型的二维数组,map[i][j]表 ...
- 《数据结构》C++代码 线性表
线性表,分数组和链表两种(官方名称记得是叫顺序存储和链式存储).代码里天天用,简单写写. 首先是数组,分静态.动态两种,没什么可说的,注意动态的要手动释放内存就好了. 其次是链表,依旧分静态.动态.课 ...
- 【PHP数据结构】顺序表(数组)的相关逻辑操作
在定义好了物理结构,也就是存储结构之后,我们就需要对这个存储结构进行一系列的逻辑操作.在这里,我们就从顺序表入手,因为这个结构非常简单,就是我们最常用的数组.那么针对数组,我们通常都会有哪些操作呢? ...
- 顺序表Vector
程序中会使用数据结构:例如:顺序表.链表.二叉树: 数据结构在底层中本质上只有两种:数据之间挨着和不挨着: 1.关于Vector
随机推荐
- C++写文件
头文件 ofstream -- 向文件写内容 实现代码 #include <vector> #include <string> #include <fstream> ...
- iphoneX适配!!!
方法1.js判断(以下采用Jquery) //适配iphonex && $(window).height() === && window.devicePixelRati ...
- select2使用方法总结
官网:http://select2.github.io/ 调用 <link href="~/Content/select2.min.css" rel="styles ...
- svn服务器镜像备份
server master 192.168.0.100-->源版本库 server slave 192.168.0.101-->镜像版本库 1.初始化svnsync init s ...
- 【转】JVM内存结构 VS Java内存模型 VS Java对象模型
JVM内存结构 我们都知道,Java代码是要运行在虚拟机上的,而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途. 其中有些区域随着虚拟机进程的启动而 ...
- lanmp安装
下载安装(ssh登录服务器,执行如下操作即可,需要用到root用户权限来安装)源码编译安装wget http://dl.wdlinux.cn:5180/lanmp_laster.tar.gztar z ...
- 接口签名进行key排序,并MD5加密
import org.apache.commons.codec.digest.DigestUtils; import java.io.UnsupportedEncodingException; imp ...
- 用layui前端框架弹出form表单以及提交
第一步:引用两个文件 第二步:点击删除按钮弹出提示框 /*删除开始*/ $(".del").click(function () { var id = $(this).attr(&q ...
- MYSQL事务处理失效原因
mysql有多种存储引擎,有些版本(mysql5.5.5以前默认是MyISAM,mysql5.5.5以后默认是InnoDB)安装时默认的存储引擎是MyISAM,而MyISAM存储引擎是不支持事务处理的 ...
- linux学习之软件包安装
本学习基于redhat系统或者centos系统 一.软件包的安装 1.rpm安装,rpm安装分为俩种,一种是直接安装xxx.rpm包,另一种是通过yum安装一系列的rpm包. #推荐使用yum安装,y ...