#ifndef LINEARLIST_H
#define LINEARLIST_H
#include <iostream>
template <class T>
class linearList{
public:
//构造函数
linearList(){
length = 0;
}
linearList(int n, T ele){
length = n;
element = new T[maxSize];
for (int i = 0; i < n; i++){
element[i] = ele;
}
}
//拷贝构造函数
linearList(linearList<T> &ll){
length = ll.size();
element = new T[maxSize];
for (int i = 0; i < length; i++){
element[i] = ll.element[i];
}
}
~linearList(){
delete[] element;
}
//判空
bool isEmpty(){
if (length == 0)
return true;
return false;
}
//判满
bool isFull(){
if (length >= maxSize)
return true;
return false;
}
//求长度
int size(){
return length;
}
//add size
bool addSize(){
maxSize += step;
T *tmp;
try{
tmp = new T[maxSize];
for (int i = 0; i < length; i++){
tmp[i] = element[i];
}
delete[] element;
element = tmp;
return true;
}
catch (bad_alloc){
return false;
}
}
//按址查找
T &findByIndex(int index){
return element[index];
}
//按值查找
int findByData(T &data){
for (int i = 0; i < length; i++){
if (element[i] == data)
return i;
}
return -1;
}
//插入元素
bool index(int pos,T &data){
if (isFull()){
if (!addSize()){
return false;
}
}
if (pos<0 || pos > length){
cout << "bad position!" << endl;
return false;
}
for (int i = length; i > pos; i--){
element[i] = element[i - 1];
}
element[pos] = data;
length++;
return true;
}
void push_back( T &data){
index(length, data);
}
//删除元素
bool Delete(int pos){
if (pos >= length){
return false;
}
for (int i = pos; i < length-1; i++){
element[i] = element[i + 1];
}
length--;
return true;
}
void pop_back(){
length--;
}
private:
int length = 0;
int maxSize = 100;
const int step = 1;
T *element;
};
#endif
【data structure】线性表简单模板c++实现
最新推荐文章于 2022-09-29 21:28:13 发布