C++顺序表的实例代码

本文实例为大家分享了C++实现顺序表的具体代码,供大家参考,具体内容如下

#include <iostream> using namespace std;  typedef int DataType;  class SeqList { public:  SeqList()  :_a(NULL)  , _size(0)  , _capacity(0)  {}   SeqList(const SeqList& s)  :_a(new DataType[s._size])  , _size(s._size)  , _capacity(s._capacity)  {  memcpy(_a, s._a, sizeof(DataType)*s._size);  }   SeqList& operator=(const SeqList& s)  {  if (this != &s)  {   DataType* tmp = new DataType[s._size];   delete[] _a;   _a = tmp;   memcpy(_a, s._a, sizeof(DataType)*s._size);   _size = s._size;   _capacity = s._capacity;  }    return *this;  }   //SeqList& operator=(SeqList s) //若传引用会改变引用对象的值  //{  // swap(_a, s._a);  // swap(_size, s._size);  // swap(_capacity, s._capacity);   // return *this;  //}   ~SeqList()  {  if (_a)  {   delete[] _a;  }  }   void PushBack(DataType d)  {  CheckCapacity();  _a[_size] = d;  _size++;  }   void PopBack()  {  if (_size > 0)  {   _size--;  }  else  {   cout << "顺序表为空" << endl;  }  }   void PushFront(DataType d)  {  CheckCapacity();   int i = (int)_size;  for (; i > 0; i--)  {   _a[i] = _a[i - 1];  }  _a[0] = d;  ++_size;  }   void PopFront()  {  if (_size > 0)  {   int i = 0;   for (; i < (int)_size; i++)   {   _a[i] = _a[i + 1];   }   _size--;  }  else  {   cout << "顺序表为空" << endl;  }  }   void Print()  {  if (_size > 0)  {   int i = 0;   for (; i < (int)_size; i++)   {   cout << _a[i] << " ";   }   cout << endl;  }  else  {   cout << "顺序表为空" << endl;  }  }   void Insert(size_t pos, DataType d) //在pos之前插入一个数据  {  CheckCapacity();   if (_size > 0)  {   if (pos <= 0 || pos > _size)   {   cout << "pos位置非法" << endl;   }   else   {   int i = 0;   for (i = (int)_size + 1; i > pos - 1; i--)   {    _a[i] = _a[i - 1];   }   _a[pos - 1] = d;   _size++;   }  }  else  {   PushFront(d);  }    }   void Erase(size_t pos) //删除pos位置的数据  {  if (_size > 0)  {   if (pos <= 0 || pos > _size)   {   cout << "pos位置非法" << endl;   }   else   {   int i = pos - 1;   for (; i < (int)_size; i++)   {    _a[i] = _a[i + 1];   }   _size--;   }  }  else  {   cout << "顺序表为空,无法进行删除" << endl;  }  }   int Find(DataType d)  {  int i = 0;    for (; i < (int)_size; i++)  {   if (_a[i] == d)   {   return i + 1;   }  }  return 0;  }  private:  void CheckCapacity()  {  if (_size == _capacity)  {   _capacity = _capacity * 2 + 3;   _a = (DataType*)realloc(_a, sizeof(DataType)*_capacity);  }  }  private:  DataType* _a;  size_t _size;  size_t _capacity; }; 

以下为测试函数

#include "SeqList.h";  void Test1() {  SeqList s1;  s1.PushBack(1);  s1.PushBack(2);  s1.PushBack(3);  s1.PushBack(4);  s1.Print();  SeqList s2(s1);  s2.Print();  s2.PopBack();  s2.PopBack();  s2.PopBack();  s2.PopBack();  s2.PopBack();  s2.Print();  s2.PushFront(4);  s2.PushFront(3);  s2.PushFront(2);  s2.PushFront(1);  s2.Print();  s2.PopFront();  s2.Print();  s2.PopFront();  s2.PopFront();  s2.PopFront();  s2.PopFront();  s2.PopFront();  SeqList s3;  s3 = s1;  s3.Print(); }  void Test2() {  SeqList s1;  s1.PushBack(1);  s1.PushBack(2);  s1.PushBack(3);  s1.PushBack(4);  s1.Print();   //s1.Insert(1, 0);  //s1.Print();   /*s1.Erase(1);  s1.Erase(1);  s1.Erase(1);  s1.Erase(1);  s1.Print();*/   int i = s1.Find(5);  cout << i << endl; }  int main() {  //Test1();  Test2();   system("pause");  return 0; } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

好想从现在开始抱着你,紧紧地抱着你,一直走到上帝面前。

C++顺序表的实例代码

相关文章:

你感兴趣的文章:

标签云: