1:先进后出栈的实现:
才用头结点的方式:
package com.algorithm.common; import java.util.Iterator; /** * 链表实现先进后出的Stack * @author lijunqing */ public class Stack<Item> implements Iterable<Item> { private int N; private Node head; class Node { private Item item; private Node next; } public Stack() { N=0; head=new Node(); } /** * 入栈 * @param item head---first ---head.next */ public void push(Item item) { Node first=new Node(); first.item=item; first.next=head.next; head.next=first; N++; } /** * 出栈 head --- head.next.next * @return */ public Item pop() { Node first=head.next; head.next=first.next; N--; return first.item; } public int size() { return N; } public boolean isEmpty() { if(N == 0) { return true; } return false; } @Override public Iterator<Item> iterator() { return new ListIterator(); } private class ListIterator implements Iterator<Item> { private Node current=head.next; @Override public boolean hasNext() { return current != null; } @Override public Item next() { Item item=current.item; current=current.next; return item; } @Override public void remove() { throw new UnsupportedOperationException(); } } public static void main(String[] args) { Stack<String> s=new Stack<String>(); s.push("as"); s.push("bs"); s.push("eee"); // System.out.println(s.size()); // String a=s.pop(); // String b=s.pop(); // System.out.println(a + " 2 " + b); // System.out.println(s.isEmpty()); Iterator<String> iterator=s.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } } }
结果:
eee bs as
相关推荐
应用.NET类库中的栈类Stack完成十进制转换成二进制、八进制、十六进制。要求应用 Windows窗体程序设计实现,界面美观,功能完善。
用数组设计堆栈,主要实现push,pop操作, 并判断是否上衣下一
实验目的 ...1. 掌握栈的操作特性及其顺序存储和链式存储结构 2. 灵活运用栈解决实际问题。 实验内容 利用栈实现算符优先法进行表达式求值,测试表达式为: 5*(3+2)-6/2# 提示:利用c++的stack容器。
CC2530 Z-stack
在手写Elastic Stack源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:elasitc 、kibana 、logstash 、等内容实现。 适合人群:具备一定编程基础,工作1-3年的研发人员 能学到什么:...
assume cs:code,ds:data, ss:stack data segment data ends stack segment dw 256 dup (0) stack ends code segment start: mov ax,stack mov ss,ax mov sp,256 mov ax,data mov es,ax ...
在unwinding_indicator之上实现了几种过期工具: C ++中的Scope成功和Scope失败,就像D语言一样,没有手动ScopeGuard的.commit / .release 不是终结者的Throwing Destructor 参数化解卷感知析构函数 两个阶段的...
c++实现栈简单功能小程序 #include using namespace std; class stack { private: int a[5]; //栈的大小 int n; //记录数组的下标 int t; //头指针? public: stack(); //构造函数 int push(int); //进栈 int ...
1.Stack.h #ifndef Stack_h #define Stack_h template class Stack { public: Stack(){}; // 构造函数 void Push(const T x); // 新元素进栈 bool Pop(); // 栈顶元素出栈 virtual bool getTop(T &x) const = ...
c++ 定义一个字符栈类Stack(包括类的实现)。数据成员包括一个存放字符的数组stck[ ]和一个栈指针tos。栈
开发环境:ISE14.7 ,win7 X64 台式机,采用具备phy接口芯片的黑金开发板AX516,高速网线一根。...版本说明:实现ARP、ICMP、UDP、TCP、IP和MAC全过程的传输,对TCP的连接、接收、发送、断开均经过测试,功能正常。
专长 Web Stack编程―只是为了好玩! ...CSS乐趣 :open_file_folder: Web Stack编程―只是为了好玩!...一般 在此项目中,您将仅通过HTML... 1.移动(下)线 2.切换 3.菜单 软件工程师 哈维尔·安德烈斯·加尔松·帕塔罗约
stack.push(1); stack.push(5); stack.top(); -> 5 stack.popMax(); -> 5 stack.top(); -> 1 stack.peekMax(); -> 5 stack.pop(); -> 1 stack.top(); -> 5 笔记: -1e7 <= x <= 1e7 操作次数不会超过 10000。 ...
前言 Python本身已有顺序表(List、Tupple)的实现,所以这里从栈开始。 什么是栈 想象一摞被堆起来的书,这就是栈。这堆书的特点是,最后被堆进去的书,永远在最上面。...class Stack(object): #
leetcode 推前使用队列实现堆栈 使用队列实现堆栈的以下操作。 push(x) -- 将元素 x 推入堆栈。...实现:使用 2 个队列 class MyStack { private Queue< Integer > q1 = new LinkedList<> (); pr
1 表达式处理 计算器使用两个栈,char_stack 用于运算符,num_stack 用于数字,以处理用户输入的表达式程序跟踪当前表达式、顶部运算符 (char_top)、顶部数字 (num_top) 和结果 (res )。表达式是根据用户输入逐步...
数据结构和算法的一点实现 一、Stack 篇 1.实现最基本的 push pop 操作。 2. 用链表实现,数据结构为 count(统计个数)+head(堆栈头)+element(中间数据)+bottom(底部) 3.每次入栈插入到 head 头部,堆栈可以动态增加 ...
1、实现一个栈数据结构。 2、利用栈实现中缀表达式与前缀表达式的转换。 三、相关内容介绍 标准的表达式如"A+B",在数学上学名叫中缀表达式(Infix Notation),原因是运算符号在两个运算对象的中间。相对应的还有...
简单计算器程序设计 2010-01-20 16:44 "1、编写一个程序实现十进制加减乘除运算 " "2、在命令提示后输入算式,运算符号不超过四个 " "3、回车后进行计算并以十进制显示结果 " ";能做带括号的运算,输入错误能报警 " ...
问候Hello World 项目的 MEAN Stack 实现##先决条件:1. NodeJs 和 npm 2. bower 包管理器 3. mongoDB ##安装过程: 1. 下载文件 2. 在主项目文件夹中运行'npm install' 3. 在主项目文件夹中运行'bower install' 4. ...