首页 > 其他 > 详细

线性结构_栈结构

时间:2020-09-12 16:11:49      阅读:47      评论:0      收藏:0      [点我收藏+]

栈结构

       1. 栈(Stack)    一种受限的线性结构

            1. 特点:

                1. 只有一个口

                2. 先进后出,后进先出

                3. 元素按照进栈顺序从栈底排到栈顶

             2. 函数调用栈:

                  假如函数A调用函数B,函数B调用函数C

                  则在执行的过程中,先将A压入栈,由于A没有执行完,所以不会弹出栈,

                      然后A中调用了B函数,B函数也被压入栈,由于B没有执行完,所以不会弹出栈

                          然后A中调用了C函数,C函数也被压入栈,并且在栈顶,

                              随后C执行结束,C函数被弹出栈,

                                  紧接着B函数执行结束,B函数被弹出栈

                                      紧接,A函数执行结束,A函数弹出栈

                递归压栈(容易栈溢出)


 

   2. 栈相关的面试题

                1. 有六个元素6 5 4 3 2 1 顺序进栈,则下列不合法的出栈顺序为: ( )

                    A: 5 4 3 6 1 2              B: 4 5 3 2 1 6

                    C: 3 4 6 5 2 1              D: 2 3 4 1 5 6

                    答案为C, 注意身审题,栈中大数在下,小数在上,并且并不是说一次性全部进栈

        3. 栈结构的实现

                1. 栈结构的实现有两种方式(即存储数据的方法)

                    基于数组

                    基于链表

                2. 栈常见的操作方法

                    1. push()       添加一个新的元素到栈顶

                    2. pop()        从栈顶移除一个元素,并且将该元素返回

                    3. peek()       返回栈顶元素,此时栈没有被修改

                    4. isEmpty()    栈是都为空,为空返回true, 不为空返回false

                    5. size()       返回栈的长度,即栈中元素的个数

                    6. toString()   将栈结构中的内容以字符形式返回        

   4. 栈结构的函数封装

技术分享图片技术分享图片
 1     // 1. 封装栈类
 2     function Stack(){
 3         // 栈的属性
 4         // 1. 初始化存储栈的数组
 5         this.items = [];
 6 
 7         // 2. 栈的简介
 8         /*************************************************/
 9         // 栈的相关操作方法
10         // 1. 将元素压入栈
11         Stack.prototype.enStack = function(element){
12             this.items.push(element);
13         }
14 
15         // 2. 从栈中取出元素
16         Stack.prototype.deStack = function(){
17             return this.items.pop();
18         }
19 
20         // 3. 查看栈顶元素
21         Stack.prototype.peek = function(){
22             return this.items[this.items.length - 1];
23         }
24 
25         // 4. 查看栈是否为空
26         Stack.prototype.isEmpty = function(){
27             return this.items.length == 0;
28         }
29 
30         // 5. 查看栈的元素个数
31         Stack.prototype.size = function(){
32             return this.items.length;
33         }
34 
35         // 6. 将栈中的内容以字符的形式返回
36         Stack.prototype.toString = function(){
37             // [1, 6, 4, 8, 9, 4] => "1 6 4 8 9 4"
38             var res = ""
39             for(var i = 0; i < this.items.lenght; i++){
40                 res += this.items[i] + " ";
41             }
42             return res;
43         }
44     }
View Code

 

 

线性结构_栈结构

原文:https://www.cnblogs.com/carreyBlog/p/13657005.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!