您的位置:首页 > 编程语言 > C语言/C++

c++实现线性表

2016-03-17 18:41 483 查看
#define  _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
typedef int DataType;
class SeqList
{
public:
SeqList()
:_arr(NULL), _size(0), _capacity(0)
{}
SeqList(const SeqList& s)
:_capacity(s._capacity), _size(s._size)
{
_arr=(new DataType[s._size]);
memcpy(_arr, s._arr, sizeof(DataType)* s._size);
}
void CheckCapcity();
void PushBack(DataType x);
void PushFront(DataType x);
~SeqList();
void PopBank();
void PopFront();
void Disp();
void Insert(size_t pos, DataType x);
int Find(DataType x);
SeqList & operator=(SeqList& s);
private:
DataType* _arr;
size_t _size;
size_t _capacity;
};
SeqList& SeqList::operator=(SeqList& s)
{
if (this != &s)
{
int *tmp;
tmp = new DataType[s._size];
memcpy(tmp, s._arr, sizeof(DataType)*s._size);
delete _arr;
_arr = tmp ;
_size = s._size;
_capacity = s._capacity;
}
return *this;
}
void SeqList::CheckCapcity()
{
if (_size >= _capacity)
{
_capacity = 2 * _capacity + 3;
_arr = (DataType*)realloc(_arr, sizeof(DataType)*_capacity);
}
}
void SeqList::PushBack(DataType x)
{
CheckCapcity();
if (_size == 0)
{
_size = 1;
_arr[0] = x;
}
else
{
_arr[_size++] = x;
}
}
void SeqList:: Disp()
{
int i = 0;
for (i = 0; i < _size; i++)
{
cout << _arr[i]<<endl;
}
}
SeqList::~SeqList()
{
if (_arr)
{
delete _arr;
_arr = NULL;
}
}
void SeqList::PopBank()
{
if (0==_size)
{
return;
}
else
{
--_size;
}
}
void SeqList::PushFront(DataType x)
{
CheckCapcity();
for (int i = _size-1; i >= 0; i--)
{
_arr[i + 1] = _arr[i];
}
_arr[0] = x;
++_size;
}
void SeqList::PopFront()
{
if (0 == _size)
{
return;
}
else
{
for (int i = 0; i < _size-1; i++)
{
_arr[i] = _arr[i + 1];
}
--_size;
}
}
void SeqList::Insert(size_t pos, DataType x)
{
CheckCapcity();
for (int i = _size; i > pos-1; i--)
{
_arr[i] = _arr[i-1];
}
_arr[pos-1] = x;
_size++;
}
int SeqList::Find(DataType x)
{
int i = 0;
for (i = 0; i < _size;i++)
{
if (_arr[i] == x)
{
return i;
}
}
return NULL;
}
void test1()
{
SeqList s1;
s1.PushBack(1);
s1.PushBack(2);
s1.PushBack(3);
s1.PushBack(4);
s1.PushBack(5);
s1.Disp();
}
void test2()
{
SeqList s1;
s1.PushBack(1);
s1.PushBack(2);
s1.PushBack(3);
s1.PushBack(4);
s1.PushBack(5);
s1.PopBank();
s1.PopBank();
s1.PopBank();
s1.PopBank();
//s1.PopBank();
s1.Disp();
}
void test3()
{
SeqList s1;
//s1.PushBack(1);
//s1.PushBack(2);
//s1.PushBack(3);
//s1.PushBack(4);
//s1.PushBack(5);
s1.PushFront(0);
s1.Disp();
}
void test4()
{
SeqList s1;
s1.PushBack(1);
//s1.PushBack(2);
//s1.PushBack(3);
//s1.PushBack(4);
//s1.PushBack(5);
s1.PopFront();
s1.Disp();
}
void test5()
{
SeqList s1;
//s1.PushBack(1);
//s1.PushBack(2);
//s1.PushBack(3);
//s1.PushBack(4);
//s1.PushBack(5);
s1.Insert(1, 7);
s1.Disp();
}
void test6()
{
SeqList s1;
s1.PushBack(1);
s1.PushBack(2);
s1.PushBack(3);
s1.PushBack(4);
s1.PushBack(5);
s1.Disp();
SeqList s2;
s2 = s1;
s2.Disp();
}
int main()
{
//test1();
//test2();
//test3();
//test4();
//test5();
test6();
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  public capacity 线性表