线性表--顺序表及链表

本文介绍了线性表的概念,包括其有序、有限的特性,并详细阐述了顺序表和链表的定义、属性、操作以及实现方式。顺序表通过数组实现,链表由独立节点组成,强调相对位置。两者的比较在于访问和插入效率,以及空间利用。总结部分回顾了线性表、链表和顺序表的知识,并提醒注意常量引用参数等相关概念。
摘要由CSDN通过智能技术生成

本文包含以下内容:

一、线性表的介绍以及抽象ADT

二、顺序表及顺序表的实现

三、链表及链表的实现

四、顺序表和链表的比较

五、总结


参考书目:《数据结构与算法分析》【美】Clifford A.Shaffer著


一、线性表的介绍以及抽象ADT

1.什么是线性表?

关键字:线性、有序、有限

所谓线性,是一个元素接着一个元素,就像一条线那样排放。而不是离散散乱的,或者一堆一堆的。

所谓有序,不是说表中的元素要按照从小到大或者从大到小排列,而是说每个元素都有它自己的位置

所谓有限,表中的元素个数不能是无穷多。


2.线性表应该有什么样的属性和操作

属性:表头、表尾、长度。

操作:增删改查

线性表中最重要的概念应该是当前位置,一切的操作都是对当前位置的操作。

比如getvalue()得到当前位置的值,insert()在当前位置添加元素,remove(),移除当前位置的元素


3.抽象ADT

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&it)=0;
	virtual void append(const E&it)=0;
	virtual E remove()=0;

	virtual void moveToStart() =0;
	virtual void moveToEnd()=0;
	virtual void pre()=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 {};
};

4.关于抽象ADT的一些解释

常量引用参数常量函数、常量引用返回值

常量引用参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值