顺序表的简单实现

《数据结构》自己练习用的代码,顺序表的简单实现,实现了一部分而已

// 请随意使用和修改
#include <iostream>
#include <cstdlib>
using namespace std;

template<class Type> class SeqList
{

	public:
		SeqList()
		{
			data = NULL;
			MaxSize = 0;
			len = 0;
		}
		SeqList(int size)
		{
			data = new Type[size];
			if(data==NULL)
			{
				cerr<<"Memory allocation failare!"<<endl;
				exit(1);
			}
			MaxSize = size;
			len = 0;
		}
		~SeqList()
		{
			delete[] data;
		}

		int insertItem(Type elem, int index)
		{
			if(index<0 || index>len)
			{
				cerr<<"Error: out of range"<<endl;
				exit(1);
			}
			for(int i=len; i>index; i--)data[i] = data[i-1];
			data[index] = elem;
			return ++len;
		}

		int appendItem(Type elem)
		{
			return insertItem(elem, len);
		}

		int deleteItem(int index)
		{
			if(index<0 || index>len)
			{
				cerr<<"Error: out of range"<<endl;
				exit(1);
			}
			for(int i=index;i<len-1;i++)data[i] = data[i+1];
			return --len;
		}
		
		void select_sort()
		{
			int min,t;
			for(int i=0;i<len-1;i++)
			{
				min = i;
				for(int j=i+1;j<len;j++)
					if(data[j]<data[min])min=j;
				t = data[i];
				data[i] = data[min];
				data[min] = t;
			}
		}
		
		void insert_sort()
		{
			Type t;
			int j;
			for(int i=len-1;i>0;i--)
			{
				if(data[i]<data[i-1])
				{
					t = data[i];
					data[i] = data[i-1];
					data[i-1] = t;
				}
			}
			for(int i=2;i<len;i++)
			{
				j = i;
				t = data[i];
				while(t<data[j-1])
				{
					data[j] = data[j-1];
					j--;
				}
				data[j] = t;
			}
		}

		Type get(int index)
		{
			if(index>=0 && index<len)
			{
				return data[index];
			}
			exit(1);
		}

		Type operator[](int index)
		{
			if(index>=0 && index<len)
			{
				return data[index];
			}
		}
		int length()
		{
			return len;
		}

	private:
		Type* data;
		int MaxSize;

		int len;
};

int main()
{
	SeqList<double> seq1(10), seq2(13);
	seq1.insertItem(1.24, 0);
	seq1.insertItem(2.24, 1);
	seq1.appendItem(10.0);
	seq1.appendItem(13.0);
	seq1.appendItem(3.1415926);
	seq1.appendItem(4.16);
	seq1.appendItem(1.16);

	cout<<"the first element of seq1: "<<seq1.get(0)<<endl;
	cout<<"the second element of seq1: "<<seq1[1]<<endl;
	cout<<"length: "<<seq1.length()<<endl;

	seq1.deleteItem(2);
	//seq1.select_sort();
	seq1.insert_sort();
	for(int i=0;i<seq1.length();i++)
	{
		cout<<seq1[i]<<" ";
	}
	cout<<endl;
	seq2.appendItem(2);
	seq2.appendItem(1);
	seq2.appendItem(3);
	seq2.insert_sort();
	for(int i=0;i<seq2.length();i++)
	{
		cout<<seq2[i]<<" ";
	}
	cout<<endl;

	return 0;
}

你可能感兴趣的:(数据结构,C++,c,C#)