码迷,mamicode.com
首页 > 其他好文 > 详细

栈的实现

时间:2016-06-18 22:36:48      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

栈的实现:

       栈,仅限制在栈的一端进行插入和删除,用于插入与删除的一端为顶部。另一端为底端。

       栈,定义为先进后出。

技术分享

可以看到 插入以a1,a2,a3顺序进行,而删除以an ,an-1顺序进行

同样栈的实现也分为数组实现以及链式实现两种。

首先来介绍一下顺序实现

优点:顺序实现的出栈和入栈的执行速度会更加的快。

缺点:顺序实现的元素数量是有限的。

代码实现:

public class Stack {
    private Node stack[];
    int top = 0;
    Stack(){
        stack = new Node [10];
    }
    Stack(int n){
        stack = new Node [n];
    }
    boolean push(Node node){
        if(top == stack.length)
            return false;
        else{
            stack[top] = node;
            top ++;
            return true;
        }
    }
    boolean remove(){
        if(top == 0)
            return false;
        else{
            top --;
            return true;
        }
    }
    Node peek(){
        return stack[top - 1];
    }
}

接下来是链式的实现方法

优点:是没有数量限制的。

缺点:在进行出栈和入栈是会进行的比较慢。

public class LinkStack {
    Node top;
    int count;
    LinkStack(){
        count = 0;
        top = new Node();
    }
    void push(Node node){            //增添栈顶元素
        top.next = node;
        node.pre = top;
        top = node;
        count ++;
    }
    boolean remove(){                //移除栈顶元素
        if(count == 0)
            return false;
        else{
            top = top.pre;
            count --;
            return true;
        }
    }
    Node peek(){                    //返回栈顶元素但不删除他
        return top;
    }
}
class Node{
    int value;
    Node next;
    Node pre;
    Node(){
        value = 0;
    }
    Node(int v){
        value = v;
    }
}

 

栈的实现

标签:

原文地址:http://www.cnblogs.com/ran-yeyu/p/5596889.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!