C++版的顺序表

来源:互联网 发布:js 不区分大小写 编辑:程序博客网 时间:2024/06/12 20:55

这篇博客是《妙趣横生的算法(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;}


0 0