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

来源:互联网 发布:mac 隐藏文件夹 编辑:程序博客网 时间:2024/05/27 14:14

因为要考研,所以开始复习数据结构,每看完一个知识点,就用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();}




原创粉丝点击