数据结构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
随机推荐
- 启用Win10家庭版的远程桌面服务端
1,使用工具:下载地址:https://github.com/binarymaster/rdpwrap/releases 参考资料: https://blog.csdn.net/BaoBeiDeXia ...
- 记一次手动SQL注入
1.检测到可能存在注入漏洞的url 最常用的 ' ,and 1=1 ,and 1=2 http://www.xxx.com/subcat.php?id=1 2.判断字段个数 http://www.xx ...
- 网络爬虫re模块的findall()函数
findall()函数匹配所有符合规律的内容,并以列表的形式返回结果. a = '"<div>指数' \ '</div>"' word = re.finda ...
- sorter函数参数设置
python内置sorted函数排完序生成一个新列表,而列表list.sorted则是直接在原列表上修改 sorted默认排序是正序,即从小到大. 若想倒着排序,则reverse=True 当需要排序 ...
- VDB R&D
VDB Data value visualize: 结论从houdini得知. API常用文字: interior:内部 Narrow-band:窄带 background:窄带外 SDF: XY p ...
- 【转】Python3 configparse模块(配置)
[转]Python3 configparse模块(配置) ConfigParser模块在python中是用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(s ...
- Python运维开发基础07-文件基础【转】
一,文件的基础操作 对文件操作的流程 [x] :打开文件,得到文件句柄并赋值给一个变量 [x] :通过句柄对文件进行操作 [x] :关闭文件 创建初始操作模板文件 [root@localhost sc ...
- python字典不区分大小写
from multidict import CIMultiDict dic=CIMultiDict() dic["key"]="1234" print(dic[ ...
- noi.ac 集合
A.集合 --- 题面 不知道有没有用的传送门[滑稽 就是给你一个 包含 1~n 的集合,让你求它的大小为 k 的子集 s 的 \(T^{min(s)}\) 的期望值, T 为给出值, min(s) ...
- SPOJ - DQUERY D-query 主席树
题意; 给一个数列$\{ a_i\}$ 一些询问$(l_i,r_i)$ 问你$[l,r]$有多少个不同元素 题解: 其实本质思路和离线化处理询问的线段树/树状数组写法差不多,对区间$[x,r]$来说, ...