今天博主收一下线性表的尾,最近我们要学习的内容是栈和队列板块,栈和队列板块分为两讲,第一讲也就是今天我们主要学习栈的相关知识,包括栈的定义、栈的顺序表示及实现,栈的链式表示,栈的应用举例,以及栈递归实现解决汉诺塔问题。 今日的重难点部分,重点为栈的特点,顺序栈和链栈上的基本运算的算法实现;难点为灵活运用栈设计解决应用问题的算法。
日常小清新:
“我往宇宙撒了一把盐,如果凌晨三点前还睡不着,今晚吃盐焗小星球!”
一、顺序表和链表的比较
1.空间方面:
- 顺序表的存储空间与其逻辑结构相同。所谓的存储密度是指节点数据本身所占的存储量除以节点结构所占的存储总量所得的值。 这个值越大,空间的利用率就越高。
- 顺序表是静态分配的,其存储密度为1,而链表是动态分配的,其存储密度小于1.
2.时间方面:
- 顺序表是采用数组实现的,是一种随机存取结构,即对表中任一节点都可在O(1)时间内直接存取 ,适宜于静态查找,而要进行删除和插入操作时,需要移动大量节点。
- 链表不是一种随机的存取结构,查找某个节点时,须从头指针开始沿途扫描才能取得,所以不适宜做查找;但对插入和删除操作,都只须修改指针,所以链表结构适用于有插入和删除操作的信息列表。
二、多项式的表示和相加
1.多项式的表示:
数学上可按升幂排列,它由n-1个系数唯一确定。
- 计算机里,它用一个线性列表P来表示:P=(p0,p1,p2,p3,…,pn)每一项的指数都隐含在其系数pi的序号里。
2.一元多项式的相加
- 一元多项式的相加,一般都是次数相同的项相加减。
- 在通常情况里,多项式的次数可能很高且变化很大,从而使得存储结构的长度很难确定。显然存储顺序存储结构时浪