c++模板库_顺序表

来源:互联网 发布:淘宝正品香水店知乎 编辑:程序博客网 时间:2024/06/18 17:14

SeqList.h:

const int DefaultSize = 100;


template <typename Type> class SeqList{
public:
SeqList(int sz = DefaultSize)
:m_nmaxsize(sz), m_ncurrentsize(-1){
if (sz > 0){
m_elements = new Type[m_nmaxsize];
}
}
~SeqList(){
delete[] m_elements;
}
int Length() const{
return m_ncurrentsize + 1;
}
int Find(Type x) const;
int IsElement(Type x) const;
int Insert(Type x, int i);
int Remove(Type x);
int IsEmpty(){
return m_ncurrentsize == -1;
}
int IsFull(){
return m_ncurrentsize == m_nmaxsize - 1;
}
Type Get(int i){
return i<0 || i>m_ncurrentsize ? (cout << "can't find the element" << endl, 0) : m_elements[i];
}
void Print();


private:
Type *m_elements;
const int m_nmaxsize;
int m_ncurrentsize;
};


template <typename Type> int SeqList<Type>::Find(Type x) const{
for (int i = 0; i < m_ncurrentsize; i++)
if (m_elements[i] == x)
return i;
cout << "can't find the element you want to find" << endl;
return -1;
}


template <typename Type> int SeqList<Type>::IsElement(Type x) const{
if (Find(x) == -1)
return 0;
return 1;
}


template <typename Type> int SeqList<Type>::Insert(Type x, int i){
if (i<0 || i>m_ncurrentsize + 1 || m_ncurrentsize == m_nmaxsize - 1){
cout << "the operate is illegal" << endl;
return 0;
}
m_ncurrentsize++;
for (int j = m_ncurrentsize; j > i; j--){
m_elements[j] = m_elements[j - 1];
}
m_elements[i] = x;
return 1;
}


template <typename Type> int SeqList<Type>::Remove(Type x){
int size = m_ncurrentsize;
for (int i = 0; i < m_ncurrentsize;){
if (m_elements[i] == x){
for (int j = i; j < m_ncurrentsize; j++){
m_elements[j] = m_elements[j + 1];
}
m_ncurrentsize--;
continue;
}
i++;
}
if (size == m_ncurrentsize){
cout << "can't find the element you want to remove" << endl;
return 0;
}
return 1;
}


template <typename Type> void SeqList<Type>::Print(){
for (int i = 0; i <= m_ncurrentsize; i++)
cout << i + 1 << ":\t" << m_elements[i] << endl;
cout << endl << endl;
}


test.h



#include <iostream>
#include "SeqList.h"


using namespace std;


int main()
{
SeqList<int> test(15);
int array[15] = { 2, 5, 8, 1, 9, 9, 7, 6, 4, 3, 2, 9, 7, 7, 9 };
for (int i = 0; i < 15; i++){
test.Insert(array[i], 0);
}
test.Insert(1, 0);
cout << (test.Find(0) ? "can't be found " : "Be found ") << 0 << endl << endl;
test.Remove(7);
test.Print();
test.Remove(9);
test.Print();
test.Remove(0);
test.Print();
cin.get();
return 0;
}

0 0
原创粉丝点击