这篇博客是《妙趣横生的算法(C++版)》的学习笔记,本人只是简单的跟着书敲着玩并浅显思考,具体的代码肯定是记不住的,但是能理解算法思路的一二也足以了。有时候,当你做一件事情的时候,并不一定能带来太多的收获,但是坚持下去就行了,做自己应该做的,量变必定引起质变
// 顺序表.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
template<typename DataType> class SeqList
{
public :
//构造函数
SeqList(int size = defaultSize)
{
if (size > 0)//检查合法性
{
maxSize = size;
length = 0;
elements = new DataType[maxSize];//分配内存
for (int i = 0; i< maxSize; i++)
{
elements[i] = NULL;
}
}
}
//析构函数
~SeqList()
{
delete[] elements;
}
bool insertOneElement(DataType data); //插入元素
bool deletedElement(int location); //删除元素
DataType getElements(int location); //获得元素
bool changeElement(int location, DataType newData);//更改指定位置的元素
int getLength()
{
return length;
}
private :
static const int defaultSize = 10;
DataType *elements;
int maxSize;
int length;
};
//
//顺序表插入操作
template<typename DataType> bool SeqList<DataType>::insertOneElement(DataType data)
{
int currentIndex = length; //记录新元素插入的位置
if (length >= maxSize)
{
return false;
}
else
{
elements[currentIndex] = data; //将新元素插入顺序表的表尾
length++;
return true;
}
}
//
//获取指定位置元素
template <typename DataType> DataType SeqList<DataType>::getElements(int location)
{
if (location<0 || location>length)//容错
{
std::cout << "参数无效" << std::endl;
}
else //获取指定位置元素的值
{
return elements[location];
}
}
//
//删除指定位置的元素
template <typename DataType> bool SeqList<DataType>::deletedElement(int location)
{
if (location >= length || length < 0)
{
return false;
}
else
{
for (int i = location; i < length;i++)
{
//将指定位置的元素往前移动
elements[i] = elements[i + 1];
}
length--; //长度减一
return true;
}
}
//
//改变指定位置的元素的值
template<typename DataType> bool SeqList<DataType>::changeElement(int location, DataType newData)
{
if (location < 0 || location >= length)
{
return false;
}
else
{
//改变值
elements[location] = newData;
return true;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
SeqList<int> list(10);
for (int i = 0; i < 10;i++)
{
list.insertOneElement(i * 10);
}
for (int i = 0; i < list.getLength();i++)
{
cout << list.getElements(i) << " ";
}
cout << endl;
list.deletedElement(3);
for (int i = 0;i<list.getLength();i++)
{
cout << list.getElements(i) << " ";
}
cout << endl;
list.changeElement(4, 33);
for (int i = 0; i < list.getLength();i++)
{
cout << list.getElements(i) << " ";
}
cout << endl;
system("pause");
return 0;
}