简单的顺序表,及其5大功能的实现!!!
2017-09-17 22:50
113 查看
**
顺序表是在计算机内存中以数组的形式保存的线性表。线性表采用顺序存储的方式存储就称之为顺序表,顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。
我们采用了模板类,功能含有按位查找功能、按值查找功能、插入功能、删除功能、遍历功能。
有参构造函数,创建一个长度为n的顺序表,并将给定的数组元素作为线性表的数据元素传入顺序表中,并将传入的元素个数作为顺序表的长度。
插入功能的实现,是通过移动元素来实现的,即插入位置以前的元素不动,以后的元素向后移动,防止出错,所以建议从最后开始移动,逐渐至目标元素的位置。
按值查找就是按顺序进行元素比较,若相同则返回该值,即完成查找。
按位查找的实现是通过一个Get函数来实现的,输入你要查找的位置的序号,返回你所查找许皓的-1的值,故直接输入序号即可。
遍历功能,没什么要说的,就是逐一输出各个元素。
简单的顺序表,及其5大功能的实现!!!
顺序表,就是用一段地址连续的储存单元依次储存线性表的数据元素!顺序表是在计算机内存中以数组的形式保存的线性表。线性表采用顺序存储的方式存储就称之为顺序表,顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。
首先
const int MaxSize = 100; template<class T> class BOOK { public: BOOK() { length = 0; } //无参构造函数,建立一个空的顺序表 BOOK(T a[], int n); //有参构造函数,建立一个长度为n的顺序表 ~BOOK() {} //析构函数为空 int Length() { return length; } //求线性表的长度,为后面的功能服务 T Get(int i); //按位查找,在线性表中查找第i个元素 int Locate(T x); //按值查找,在线性表中查找值为x的元素序号 void Insert(int i, int x); //插入操作,在线性表中插入第i个元素 T Delete(int i); //删除操作,删除线性表中的第i个元素 void PrintList(); //遍历操作,按序号查找依次输出各个元素,即打印功能 private: T data[MaxSize]; //存放数据的元素的数组 int length; //线性表的长度 };
我们采用了模板类,功能含有按位查找功能、按值查找功能、插入功能、删除功能、遍历功能。
构造函数
//构造函数 template<class T> BOOK<T>::BOOK(T a[], int n) { for (int i = 0; i < n; i++) { data[i] = a[i]; length = n; } }
有参构造函数,创建一个长度为n的顺序表,并将给定的数组元素作为线性表的数据元素传入顺序表中,并将传入的元素个数作为顺序表的长度。
插入功能
//插入功能 template<class T> void BOOK<T>::Insert(int i, int x) { for (int j = length; j >= i; i--) { data[j] = data[j - 1]; } data[i - 1] = x; length++; }
插入功能的实现,是通过移动元素来实现的,即插入位置以前的元素不动,以后的元素向后移动,防止出错,所以建议从最后开始移动,逐渐至目标元素的位置。
按值查找
//顺序表按值查找法 template<class T> int BOOK<T>::Locate(int x) { for (int i = 0; i < length; i++) af3c if (data[i] == x) { return i + 1; //下标为i的元素等于x,返回其序号i+1 } }
按值查找就是按顺序进行元素比较,若相同则返回该值,即完成查找。
按位查找
//按位查找功能 template<class T> T BOOK<T>::Get(int i) { return data[i - 1]; }
按位查找的实现是通过一个Get函数来实现的,输入你要查找的位置的序号,返回你所查找许皓的-1的值,故直接输入序号即可。
删除功能
//删除功能 template<class T> T BOOK<T>::Delete(int i) { int x = 0; x = data[i - 1]; //取出位置i的元素 for (int j = i; j < length; j++) { data[j - 1] = data[j]; //此处的j已经是元素所在的数组下标 length--; return x; } }
遍历功能
//顺序表遍历算法 template<class T> void BOOK<T>::PrintList() { for (int i = 0; i < length; i++) { cout << data[i]; //依次输出线性表的元素值 } cout << endl; }
遍历功能,没什么要说的,就是逐一输出各个元素。
最后,完整顺序表及其基础功能的实现
#include<iostream>
using namespace std;
const int MaxSize = 100;
template<class T>
class BOOK {
public:
BOOK() { length = 0; } //无参构造函数,建立一个空的顺序表
BOOK(T a[], int n); //有参构造函数,建立一个长度为n的顺序表
~BOOK() {} //析构函数为空
int Length() { return length; } //求线性表的长度
T Get(int i); //按位查找,在线性表中查找第i个元素
int Locate(int x); //按值查找,在线性表中查找值为x的元素序号
void Insert(int i, int x); //插入操作,在线性表中插入第i个元素
T Delete(int i); //删除操作,删除线性表中的第i个元素
void PrintList(); //遍历操作,按序号查找依次输出各个元素
private:
T data[MaxSize]; //存放数据的元素的数组
int length; //线性表的长度
};
//构造函数 template<class T> BOOK<T>::BOOK(T a[], int n) { for (int i = 0; i < n; i++) { data[i] = a[i]; length = n; } }
//顺序表按位查找法
template<class T>
T BOOK<T>::Get(int i) {
return data[i - 1];
}
//顺序表按值查找法
template<class T>
int BOOK<T>::Locate(int x) {
for (int i = 0; i < length; i++)
if (data[i] == x)
{
return i + 1; //下标为i的元素等于x,返回其序号i+1
}
}
//顺序表插入算法
template<class T>
void BOOK<T>::Insert(int i, int x) {
for (int j = length; j >= i; i--)
{
data[j] = data[j - 1]; //因为是存在数组中的,故要减一
}
data[i - 1] = x;
length++;
}
//顺序表删除算法
template<class T>
T BOOK<T>::Delete(int i) {
int x = 0;
x = data[i - 1]; //取出位置i的元素
for (int j = i; j < length; j++)
{
data[j - 1] = data[j]; //此处的j已经是元素所在的数组下标
length--;
return x;
}
}
//顺序表遍历算法 template<class T> void BOOK<T>::PrintList() { for (int i = 0; i < length; i++) { cout << data[i]; //依次输出线性表的元素值 } cout << endl; }
int main() {
int r[5] = { 1,2,3,4,5 };
BOOK<int> L(r, 5); //定义一个长度为5的顺序表
L.PrintList(); //输出所有的元素
L.Insert(3, 3); //在第2个位置插入值为3的元素
L.PrintList(); //输出所有的元素
cout << L.Locate(3) << endl; //查找第三个位置的元素
L.Delete(2); //删除第2个元素
L.PrintList(); //输出所有的元素
}
相关文章推荐
- C++实现顺序表简单功能
- 链表类的实现及其简单功能
- 简单探讨可牛影像软件中具有肤质保留功能的磨皮算法及其实现细节
- 简单探讨可牛影像软件中具有肤质保留功能的磨皮算法及其实现细节。
- 简单探讨可牛影像软件中具有肤质保留功能的磨皮算法及其实现细节。
- JS简单实现一键回顶功能
- iOS简单登录LoginViewController、注册RegisterViewController等功能实现方法
- ipad版简单美团界面功能实现(纯swift编写)
- PostgreSQL如何实现MySQL中的group_concat聚集函数(简单的拼接功能)
- JS实现简单的评分评星功能
- 用Python 实现刷钻网上抢任务,并实现一个简单的限制使用时间的功能
- 简单实现jQuery上传图片显示预览功能
- 使用Java实现简单的server/client回显功能的方法介绍
- SeqList.h (顺序表及其简单应用)
- Unity3D 5.0简单的实现跳跃功能
- python如何实现简单的爬虫功能
- jQuery实现简单的图片轮播(二)-增加左右(或上下)翻页功能
- 录像功能简单实现&字幕srt保存
- Android广播事件机制及应用(实现简单的定时提醒功能)
- 用简单的方法,在android上实现手势放大缩小功能