资讯专栏INFORMATION COLUMN

【Java】堆栈的实现

yacheng / 1125人阅读

摘要:实现泛型实现下推堆栈堆栈节点构造方法构造方法判断是否为空指向栈顶操作操作函数用于测试测试结果实现

Java实现
/*
 * 泛型实现下推堆栈
 */
public class LinkedStack {
    /*堆栈节点*/
    private static class Node {
        U item;
        Node next;

        Node() {                                            //构造方法1
            item = null;
            next = null;
        }

        Node(U item, Node next) {            //构造方法2
            this.item = item;
            this.next = next;
        }
        //判断是否为空
        boolean end() {return item == null && next == null;}
    }

    private Node top = new Node();        //指向栈顶

    public void push(T item) {              //push操作
        top = new Node(item, top);
    }

    public T pop() {                                    //pop操作
        T result = top.item;
        if (!top.end()) {
            top = top.next;
        }
        return result;
    }

    /*main函数用于测试*/
    public static void main(String[] args) {
        LinkedStack lss = new LinkedStack();
        for (String s : "Phasers on stun!".split(" "))
            lss.push(s);
        String s;
        while ((s = lss.pop()) != null)
            System.out.println(s);
    }
}

测试结果
  

stun!
on
Phasers

C实现
typedef struct stack
{
    int data;
    struct stack*next;
}stack;

static stack* top;

int is_empty()
{
    return top==NULL;
}

void push(int a)
{
    stack*p;
    p=(stack*)malloc(sizeof(stack));
    p->data=a;
    p->next=top;
    top=p;
}

void pop()
{
    stack* q;
    q=top;
    top=top->next;
    free(q);
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64109.html

相关文章

  • Java线程堆栈分析

    摘要:线程堆栈最擅长与分析如下类型问题系统无缘无故过高。性能瓶颈如无法充分利用等线程死锁死循环,饿死等。由于线程数量太多导致系统失败如无法创建线程等。注意死锁的两个或多个线程是不消耗的,有的人认为的使用率是线程死锁导致的,这个说法是完全错误的。 不知觉间工作已有一年了,闲下来的时候总会思考下,作为一名Java程序员,不能一直停留在开发业务使用框架上面。老话说得好,机会是留给有准备的人的,因此...

    jerry 评论0 收藏0
  • Java集合问题大汇总

    摘要:集合中成员很丰富,常用的集合有,,等。实现接口的集合主要有。集合中不能包含重复的元素,每个元素必须是唯一的。而以作为实现的构造函数的访问权限是默认访问权限,即包内访问权限。与接口不同,它是由一系列键值对组成的集合,提供了到的映射。 原文地址 Java集合 Java集合框架:是一种工具类,就像是一个容器可以存储任意数量的具有共同属性的对象。 Java集合中成员很丰富,常用的集合有Arra...

    894974231 评论0 收藏0
  • Treiber Stack简单分析

    摘要:在添加新项目时使用堆栈,将堆栈的顶部放在新项目之后。当从堆栈中弹出一个项目时,在返回项目之前,您必须检查另一个线程自操作开始以来没有添加其他项目。比较和交换将堆栈的头部设置为堆栈中旧的第二个元素,混合完整的数据结构。 Abstract Treiber Stack Algorithm是一个可扩展的无锁栈,利用细粒度的并发原语CAS来实现的,Treiber Stack在 R. Kent T...

    junfeng777 评论0 收藏0
  • Java™ 教程(如何抛出异常)

    如何抛出异常 在捕获异常之前,某些代码必须抛出一个,任何代码都可能抛出异常:你的代码,来自其他人编写的包中的代码,例如Java平台附带的包或Java运行时环境,无论抛出什么异常,它总是使用throw语句抛出。 你可能已经注意到,Java平台提供了许多异常类,所有类都是Throwable类的后代,并且所有类都允许程序区分在程序执行期间可能发生的各种类型的异常。 你还可以创建自己的异常类来表示你编写的...

    zhangwang 评论0 收藏0
  • JVM内存分配方式

    摘要:前言本篇讲解在程序运行时,内存的分配是怎样进行的虚拟机编译时的内存存储有三类静态方法区存储栈式存储堆式存储静态存储是指在编译的时候就得确定这个数据的存储需求,然后给它分配固定的内存,所以说静态存储不允许有可变的数据结构出现,因为可变的数据不 前言 本篇讲解在java程序运行时,内存的分配是怎样进行的? java虚拟机编译时的内存存储有三类:1.静态(方法区)存储2.栈式存储3.堆式存储...

    habren 评论0 收藏0

发表评论

0条评论

yacheng

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<