c++ 实现动态顺序表(拷贝构造 赋值运算符重载等操作)

来源:互联网 发布:mac的ppt怎么调16:9 编辑:程序博客网 时间:2024/06/01 16:19
#pragma once#include<iostream>#include<malloc.h>using namespace std;typedef int DataType;class SList{public: SList() :_p(NULL), _size(0), _capcity(0) { }; SList(SList & s)  {  if (s._p == NULL)   return;  DataType *tmp = new DataType[s._size];  _p = tmp;  memcpy(_p, s._p, s._size*sizeof(DataType));  _size = s._size;  _capcity = _size;     } SList& operator=(const SList &s) {  if (&s != this)  {   DataType *tmp = new DataType[s._size];   memcpy(tmp, s._p,s._size);   delete[]_p;   _p = tmp;   _size = s._size;   _capcity = s._capcity;  }  return *this; }  ~SList() {  if (_p)  {   delete[]_p;  } } void UpdateCup() {  _capcity = 2 * _capcity + 3;  _p = (DataType *)realloc(_p, (sizeof(DataType)*_capcity)); } void PushBack(DataType x) {  if (_size >= _capcity)  {   UpdateCup();  }  _p[_size] = x;  ++_size; } void PopBack() {  if (_size <= 0)   return;  --_size; }  void PrintSlist() {  for (int i = 0; i < _size; ++i)  {   cout << _p[i] << "->";  }  cout << "NULL"<<endl; } void Insert(size_t pos,DataType x) {  if (pos<0 && pos>_size)   return;  if (_size >= _capcity)  {   UpdateCup();  }  ++_size;  for (int i = _size; i > pos; i--)  {   _p[i] = _p[i - 1];  }  _p[pos] = x; }private: DataType *_p; size_t _size; size_t _capcity;};


0 0