03堆栈和队列.ppt

用c语言的数组来实现顺序栈。如果是那样,由于c语言的数组下标规定是从0开始的,那么最初应该把Ss_top设置程成-1,变化范围从0到Ss_max-1。 每一个顺序栈在运作过程中,其栈顶位置是变化的,栈底是不变的。基于这种特点,在程序设计中,可以让两个顺序栈“共享”一个连续的存储区,互补存储空间的不足,以达到减少发生“上溢”出错、节约存储空间的目的。 下图中,只有当Ss_top1和Ss_top2都指向区域中同一个位置时,才会发生上溢”出错 采用这样的技术组织顺序栈时,有两点要注意,一是两个顺序栈中数据元素的类型和尺寸大小应该完全一样:二是一个元素打算进入顺序栈Ss1或进入顺序栈Ss2,对指针进入顺序栈Ss1_top1和Ss2_top2做的操作是不一样的,即对顺序栈Ss1的Ss1_top1应该做“++”操作(朝大方向变化),对顺序栈Ss2的Ss2_top1应该做“--”操作(朝小方向变化)。 由于是出栈操作,因此必须要注意的边界问题是栈是否为空。算法中是通过检查条件: Ss_top == 0是否成立来判断的。 如果在顺序栈空时仍打算出栈,就称为发生了“下溢(Underflow)”出错。 注意,操作“i = Ss_top ”是非常必要的,我们不能把它去掉。因为若把算法变为: Display_Ss(Ss, Ss_top) { for (Ss_top ; Ss_top =0; S

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档