数据结构——线性表:顺序表、单链表、双链表(C++)

内容概要:

1.代码部分:

  • 线性表抽象类
  • 顺序表类
  • 单链表类
  • 双链表类
  • 主函数

2.基本概念及注意事项


代码(测试环境VS2017):

//线性表ADT类的定义:ADT_List.h

template <typename E>class List
{
private:
	void operator=(const List&) {}
	List(const List&) {}
public:
	List() {}
	virtual ~List(){}

	virtual void clear() = 0;
	virtual void insert(const E&item) = 0;
	virtual void append(const E&item) = 0;
	virtual E remove() = 0;
	virtual void moveToStart() = 0;
	virtual void moveToEnd() = 0;
	virtual void prev() = 0;
	virtual void next() = 0;
	virtual int length() const = 0;
	virtual int currPos()const = 0;
	virtual void moveToPos(int pos) = 0;
	virtual const E& getValue()const = 0;
};
//顺序表类的实现:ADT_List.h

template<typename E>
class AList :public List<E>
{
private:
	int maxSize;
	int listSize;
	int curr;
	E*listArry;
public:
	AList(int size = 100)//构造,默认大小为100
	{
		maxSize = size;
		listSize = curr = 0;
		listArry = new E[maxSize];
	}
	~AList() { delete[]listArry; }

	void clear()
	{
		delete[]listArry;
		listSize = curr = 0;
		listArry = new E[maxSize];
	}
	void insert(const E&it)
	{
		assert(listSize < maxSize);
		for (int i = listSize; i > curr; i--)
			listArry[i] = listArry[i - 1];
		listArry[curr] = it;
		listSize++;
	}
	void append(const E&it)
	{
		assert(listSize < maxSize);
		listArry[listSize++] = it;
	}
	E remove()
	{
		assert((curr >= 0) && (curr < listSize));
		E it = listArry[curr]
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值