数据结构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
随机推荐
- Eclipse安装教程 ——史上最详细安装Java &Python教程说明
参考链接:https://blog.csdn.net/zichen_ziqi/article/details/73995755
- 20165234 《Java程序设计》第六周学习总结
第六周学习总结 教材学习内容总结 第八章 常用实用类 String类 Java专门提供了用来处理字符序列的 String 类.String类在java.lang包中,由于 java.lang 包中的类 ...
- Linux下安装PCRE
原文链接:https://www.linuxidc.com/Linux/2015-03/114986.htm PCRE(Perl Compatible Regular Expressions)是一个轻 ...
- Python学习笔记-循环语句
While 循环语句 flag=False name = raw_input("请输入:"); numbers=['羊爸爸','羊妈妈','羊宝','牛宝'] while len( ...
- jenkins服务器上安装配置Android SDK
1.下载Android SDK http://tools.android-studio.org/index.php/sdk/ 我下载的是:android-sdk_r24.4.1-linux.tgz ...
- 用ethtool 命令解决Linux 网卡丢包【转】
转自:https://blog.csdn.net/chengxuyuanyonghu/article/details/73739516 生产中有一台Linux设备并发比较大,droped包比较多,尤其 ...
- 两种 AuthorizationSchemes 在 ASP.NET Core 2
Welcome to IdentityServer4: https://identityserver4.readthedocs.io/en/release/ 支持 ASP.NET Core 2 ...
- python的wrapt模块实现装饰器
wrapt是一个功能非常完善的包,用于实现各种你想到或者你没想到的装饰器.使用wrapt实现的装饰器你不需要担心之前inspect中遇到的所有问题,因为它都帮你处理了,甚至inspect.getsou ...
- MySQL之路 ——1、安装跳坑
最近几天准备写一个JavaWeb的简单登录,注册试下手:所谓”工欲善其事必先利其器“,然后数据库方面的话,考虑用MySQL.在安装MySQL过程中,碰到了一些问题(大同小异),记录在此,诸君共勉. 1 ...
- curl的http上传文件代码
int http_post_file(const char *url, const char *user, const char *pwd, const char *filename){ ass ...