顺序表

const int DefaultSize=100;

template<typename Type>class SeqList
{
public:
	SeqList(int sz=DefaultSize)
		:m_nmaxsize(sz),m_ncurrentsize(-1)
	{
		if (sz>0)
		{
			m_elements = new Type[m_nmaxsize];
		}
	}
	~SeqList()
	{
		delete[] m_elements;
	}

	int Length() const
	{
		return m_ncurrentsize+1;
	}
	int Find(Type x) const;
	int IsElement(Type x) const;
	int Insert(Type x,int i);
	int Remove(Type x);
	int IsEmpty()
	{
		return m_ncurrentsize == -1;
	}

	int IsFull()
	{
		return m_ncurrentsize == m_nmaxsize-1;
	}

	Type Get(int i)
	{
		return i<0|| i>m_ncurrentsize?(cout<<"cant find the element"<<endl,0):m_elements[i];
	}
	void Print();
private:
	Type *m_elements;
	const int m_nmaxsize;
	int m_ncurrentsize;
};

template<typename Type> int SeqList<Type>::Find(Type x) const
{
	for (int i=0;i<m_ncurrentsize;i++)
	{
		if (m_elements[i]==x)
		{
			return i;
		}
	}
	cout<<"can't find the element you want to find"<<endl;
	return -1;
}
template<typename Type> int SeqList<Type>::IsElement(Type x) const
{
	if (Find(x)==-1)
	{
		return 0;
	}
	return 1;
}
template<typename Type>int SeqList<Type>::Insert(Type x, int i)
{
	if (i<0 || i>m_ncurrentsize+1 || m_ncurrentsize ==m_nmaxsize-1)
	{
		cout<<"the operate is illegal"<<endl;
		return 0;
	}
	m_ncurrentsize++;
	for (int j=m_ncurrentsize;j>i;j--)
	{
		m_elements[j]=m_elements[j-1];
	}
	m_elements[i]=x;
	return 1;
}
template<typename Type> int SeqList<Type>::Remove(Type x)
{
	int size = m_ncurrentsize;
	for (int i=0;i<m_ncurrentsize;)
	{
		if (m_elements[i]==x)
		{
			for (int j=i;j<m_ncurrentsize;j++)
			{
				m_elements[j]=m_elements[j+1];
			}
			m_ncurrentsize--;
			continue;
		}
		i++;
	}
	if (size==m_ncurrentsize)
	{
		cout<<"can't find the element you want to remove"<<endl;
		return 0;
	}
	return 1;
}

template<typename Type> void SeqList<Type>::Print()
{
	for (int i=0;i<=m_ncurrentsize;i++)
	{
		cout<<i+1<<":\t"<<m_elements[i]<<endl;
	}
	cout<<endl<<endl;
}

下面为测试代码:

#include <iostream>
#include "SeqList.h"

using namespace std;

int main()
{
	SeqList<int> test(15);
	int array[15] ={5,5,5,5,5,5,5,55,5,5,5,5,5,5,5};
	for(int i=0;i<15;++i)
	{
		test.Insert(array[i],0);
	}
	test.Insert(1,0);
	cout<<(test.Find(0)?"can be found":"Be found")<<0<<endl<<endl;
	test.Remove(7);
	test.Print();
	test.Remove(9);
	return 0;
}


 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值