用c++语言编写代码,编写顺序表类模板的.cpp 和.h 文件代码
时间: 2024-02-06 20:10:47 浏览: 33
下面是一个简单的顺序表类模板的示例,包含 .cpp 和 .h 文件代码:
顺序表类模板的.h文件代码:
```c++
#pragma once
#include <iostream>
#include <exception>
template<typename T>
class SeqList
{
public:
SeqList(int max_size);
~SeqList();
void clear();
bool is_empty();
bool is_full();
int length();
bool get_elem(int i, T &e);
int locate_elem(T e);
bool insert(int i, T e);
bool remove(int i);
private:
T* data;
int max_size;
int len;
};
template<typename T>
SeqList<T>::SeqList(int max_size)
{
this->data = new T[max_size];
this->max_size = max_size;
this->len = 0;
}
template<typename T>
SeqList<T>::~SeqList()
{
delete[] this->data;
}
template<typename T>
void SeqList<T>::clear()
{
this->len = 0;
}
template<typename T>
bool SeqList<T>::is_empty()
{
return this->len == 0;
}
template<typename T>
bool SeqList<T>::is_full()
{
return this->len == this->max_size;
}
template<typename T>
int SeqList<T>::length()
{
return this->len;
}
template<typename T>
bool SeqList<T>::get_elem(int i, T &e)
{
if (i < 1 || i > this->len) {
return false;
}
e = this->data[i - 1];
return true;
}
template<typename T>
int SeqList<T>::locate_elem(T e)
{
for (int i = 0; i < this->len; i++) {
if (this->data[i] == e) {
return i + 1;
}
}
return 0;
}
template<typename T>
bool SeqList<T>::insert(int i, T e)
{
if (i < 1 || i > this->len + 1 || this->is_full()) {
return false;
}
for (int j = this->len; j >= i; j--) {
this->data[j] = this->data[j - 1];
}
this->data[i - 1] = e;
this->len++;
return true;
}
template<typename T>
bool SeqList<T>::remove(int i)
{
if (i < 1 || i > this->len) {
return false;
}
for (int j = i; j < this->len; j++) {
this->data[j - 1] = this->data[j];
}
this->len--;
return true;
}
```
顺序表类模板的.cpp文件代码:
```c++
#include "SeqList.h"
template<typename T>
SeqList<T>::SeqList(int max_size)
{
this->data = new T[max_size];
this->max_size = max_size;
this->len = 0;
}
template<typename T>
SeqList<T>::~SeqList()
{
delete[] this->data;
}
template<typename T>
void SeqList<T>::clear()
{
this->len = 0;
}
template<typename T>
bool SeqList<T>::is_empty()
{
return this->len == 0;
}
template<typename T>
bool SeqList<T>::is_full()
{
return this->len == this->max_size;
}
template<typename T>
int SeqList<T>::length()
{
return this->len;
}
template<typename T>
bool SeqList<T>::get_elem(int i, T &e)
{
if (i < 1 || i > this->len)