一文让你读懂顺序表,链表,树,栈,队列,堆的关系

1.顺序表,链表,树,我们可以将它们分成一类,它们的逻辑底层都是结构体(顺序表一般为数组),它们的功能都是数据的存储,顺序表强调的是物理空间的连续关系,链表强调的是逻辑空间的连续关系,而树更多地强调的是逻辑上的多种联系,三者的本质都是数据的存储手法,只不过三者的优劣不同:顺序表的优势在于快捷的随机数据访问,缺点是不能随心所欲地在表的中间增删数据;链表的优势在于在表中增删数据十分容易,且物理空间上的不连续很好地避免了因内存不足导致过多数据无法存储的情况,但它的随机访问能力相对顺序表较弱,树的优势在于它对于逻辑关系的表述有先天的优势,对于生活中的复杂关系设计出了父子,兄弟祖孙等多种关系,而前两者只能表示链式关系,而相应地,树的各种操作也变得更加复杂,如AVL树,红黑树,B树都有恐怖的代码量,所以,为了让程序员的前期学习变得容易,我们设计出了二叉树,而其中的逻辑关系也较为简单,便于操作

2.栈,队列,堆,我们可以将它们分成一类,它们是一种数据的存储方式,它们的逻辑底层都是顺序表和链表,而顺序表,链表,树在它们中和int,char一样,都仅仅是数据。栈代表的是井式存储,先进后出,栈顶才能增删,可以形象的理解为往井里扔东西,无论取东西还是扔东西都只能在井口,队列代表的是流水线式存储,数据先进先出,而只能在队尾写入,在队头删除,可以形象地理解为一个人在传送带一头放东西,另一个人在传送带另一头拿东西,而堆分为大堆和小堆,是一种完全二叉树,它更多地代表了一种排序的思想,大堆的第一个比其他的都大,小堆的第一个比其他的都小,其实堆是一种树,应该分在第一类也就是树的子集,但作者认为它更多地代表了数据的存储方式,具体由读者学习后理解。

你可能感兴趣的:(数据结构,链表,数据结构)