在C++中写出构造、析构函数等,实现顺序表的增删查改操作。
下面是头文件,类函数的实现。
#pragma once
typedef int DataType;
class SeqList
{
public:
SeqList();
//顺序表只考虑深拷贝
//传统写法
//SeqList(const SeqList& s);
//SeqList& operator=(const SeqList& s);
//现代写法
SeqList(DataType* array, const size_t size);
SeqList(const SeqList& s);
SeqList& operator=(SeqList& s);
~SeqList();
void _CheckCapacity();
void PushBack(DataType x);
void PopBack();
void PushFront(DataType x);
void PopFront();
void Insert(size_t pos, DataType x);
void Erase(size_t pos);
size_t Find(DataType x);
void PrintSepList();
private:
DataType* _array;
size_t _size;
size_t _capacity;
};
构造函数、运算符重载、析构函数、增删查改等函数实现如下:
#include<iostream>
using namespace std;
#include"SeqList.h"
SeqList::SeqList()
:_array(NULL)
, _size(0)
, _capacity(0)
{}
//顺序表只考虑深拷贝
//传统写法
//SeqList(const SeqList& s)
// :_array(new DataType[s._size])
// ,_size(s._size)
// ,_capacity(s._capacity)
//{//内存拷贝,strcpy和strncpy针对char*
// memcpy(_array, s._array, sizeof(DataType)*(_size));
//}
//SeqList& operator=(const SeqList& s)
//{
// if (this != &s)
// {
// DataType* tmp = new DataType[s._size];
// delete[] _array;
// _array = tmp;
// _size = s._size;
// _capacity = s._capacity;
// memcpy(_array, s._array, sizeof(DataType)*(_size));
// }
// return *this;
//}
//现代写法
SeqList::SeqList(DataType* array, const size_t size)
:_array(new DataType[size])
, _size(size)
, _capacity(size)
{
memcpy(_array, array, sizeof(DataType)*size);
}
SeqList::SeqList(const SeqList& s)
:_array(NULL)
{
SeqList tmp(s._array, s._size);
swap(_array, tmp._array);
_size = s._size;
_capacity = s._size;//容量用_size,防止越界
}
SeqList& SeqList::operator=(SeqList& s)
{
if (this != &s)
{
swap(_array, s._array);
_size = s._size;
_capa