[数据结构]顺序表的实现-C++

本文介绍了一种基于C++的顺序表实现方法,利用模板类完成对数组的基本操作,包括增删改查等功能,并提供了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为要考研,所以开始复习数据结构,每看完一个知识点,就用C++实现一下,以便加深印象

第一个知识点是顺序表,就是封装对一个数组的操作,排序什么的等到后边复习到了再来补充,现在只有增删改查

因为之前都是用java写各种项目作业什么的,所以C++语法忘得差不多的,正在慢慢捡回来,正好趁这次机会重新看了一下模板类,就用模板类实现了




//SequenceTable.h

#pragma once
#include<iostream>
using namespace std;
//顺序表

template <class T> class SequenceTable {
private:
	T *array;
	int length;
	int maxLength;
public:
	SequenceTable();							//默认构造函数
	SequenceTable(int maxlength);				//带最大长度参数的构造函数
	bool deleteByIndex(int index);				//通过下标删除元素
	bool addByIndex(T t, int index);			//通过下标增加元素
	bool add(T t);								//在表尾增加元素
	T getByIndex(int index);					//通过下标得到元素
	int getLength();							//得到当前表的长度
	int getMaxLength();							//得到当前表的最大长度
	void showAll();								//显示所有元素
	bool replaceByIndex(T t, int index);		//通过下表替换元素
};

//SequenceTable.cpp

#include"SequenceTable.h"

template <class T> SequenceTable<T>::SequenceTable() {

}

template <class T> SequenceTable<T>::SequenceTable(int maxlength) {
	array = new T[maxlength];
	this->length = 0;
	this->maxLength = maxlength;
}

template <class T> bool SequenceTable<T>::deleteByIndex(int index) {
	if (index<0 || index>length - 1) {
		return false;
	}
	for (int i = index + 1; i < length; i++) {
		array[i - 1] = array[i];
	}
	length--;
	return true;
}

template <class T> bool SequenceTable<T>::addByIndex(T t, int index) {
	if (index<0 || index>length) {
		return false;
	}
	length++;
	for (int i = length - 1; i > index; i--) {
		array[i] = array[i - 1];
	}
	array[index] = t;
	return true;
}

template <class T> bool SequenceTable<T>::add(T t) {
	array[length] = t;
	length++;
	return true;
}

template <class T> T SequenceTable<T>::getByIndex(int index) {
	return array[index];
}

template <class T> int SequenceTable<T>::getLength() {
	return length;
}

template <class T> int SequenceTable<T>::getMaxLength() {
	return maxLength;
}

template <class T> void SequenceTable<T>::showAll() {
	for (int i = 0; i < length; i++) {
		cout << array[i] << "\t";
	}
	cout << endl;
}

template <class T> bool SequenceTable<T>::replaceByIndex(T t, int index) {
	if (index<0 || index>=length) {
		return false;
	}
	array[index] = t;
	return true;
}


测试主函数

(之前使用的是include的头文件,但是一直报错未定义,上网查了一下,模板类好像不是很支持分开文件写定义和实现,include源cpp文件就好了)

#include<iostream>
#include"SequenceTable.cpp"
using namespace std;

void main() {
	SequenceTable<int> st(10);
	st.add(1);
	st.add(2);
	st.add(3);
	st.add(4);
	st.showAll();
	st.addByIndex(5, 3);
	st.showAll();
	st.deleteByIndex(0);
	st.showAll();

}




使用c++实现顺序表:多文件编程,层次清晰,函数有注释 SeqList();//构造函数,存储的元素个数设为0 bool setLength(size_t length);//设置已经存储的元素个数 bool addElement(ElemType element);//把某个元素添加到顺序表末尾 bool addElement(ElemType element , size_t n);//插入一个元素,使其成为第n个元素,其余元素后移 bool delElement();//删除所有的元素 bool delElement(size_t n);//删除第n个元素 bool delElement(string elementDetailType,string elementDetail);//通过某个元素细节找到元素,把这个元素删除 bool replaceElement(ElemType element , size_t n);//使用一个元素,替换掉第n个元素 bool swapElement(size_t n1 , size_t n2);//把第n1个元素和第n2个元素交换 ElemType* getElement();//得到数组头的指针 ElemType* getElement(size_t n);//得到第n个元素的指针 size_t getLength();//得到存储的元素个数 size_t getMaxSize();//得到顺序表容量 bool showElementDetail();//输出所有的元素细节 bool showElementDetail(size_t n);//输出第n个元素的细节 bool showElementDetail(string elementDetailType,string elementDetail);//通过某个元素细节找到元素,输出元素所有细节 size_t findElement(string elementDetailType,string elementDetail);//通过某个元素细节找到元素位置 static int inputAInt(int min = 0,int max = 9,int defaultValue = -1);//从键盘读取,限制为一个min到max间的整数,非法情况返回defaultValue void startControlLoop();//打开控制界面 ~SeqList();//析构函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值