算法(Algorithms)第4版 练习 1.3.1
package com.qiusongde; import java.util.Iterator;
import java.util.NoSuchElementException; import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut; public class FixedCapacityStackOfStrings implements Iterable<String> { private String[] a;
private int n; public FixedCapacityStackOfStrings(int cap) {
a = new String[cap];
n = 0;
} public void push(String item) {
if(isFull())
throw new IndexOutOfBoundsException("FiexdCapcityStackOfString is Full");
a[n++] = item;
} public String pop() {
if(isEmpty())
throw new NoSuchElementException("FiexdCapcityStackOfString is empty");
return a[--n];
} //1.3.1
public boolean isFull() {
return n == a.length;
} public boolean isEmpty() {
return n == 0;
} public int size() {
return n;
} @Override
public Iterator<String> iterator() {
return new ReverseArrayIterator();
} private class ReverseArrayIterator implements Iterator<String> { private int i = n; @Override
public boolean hasNext() {
return i > 0;
} @Override
public String next() {
return a[--i];
} } public static void main(String[] args) { int max = 5;
FixedCapacityStackOfStrings stack = new FixedCapacityStackOfStrings(max);
StdOut.println("stack initialized max size is:" + max); while (!StdIn.isEmpty()) { String item = StdIn.readString(); if (!item.equals("-")) {
if(stack.isFull())
StdOut.println("push error, stack full");
else {
stack.push(item);
StdOut.println("push success:" + item + " size:" + stack.size()); StdOut.print("Left on stack: ");
for (String s : stack) {
StdOut.print(s + " ");
}
StdOut.println();
}
} else {
if(stack.isEmpty())
StdOut.println("pop error, stack empty");
else {
StdOut.println("pop success:" + stack.pop() + " size:" + stack.size()); StdOut.print("Left on stack: ");
for (String s : stack) {
StdOut.print(s + " ");
}
StdOut.println();
}
} } } }
stack initialized max size is:5
to
push success:to size:1
Left on stack: to
be
push success:be size:2
Left on stack: be to
or
push success:or size:3
Left on stack: or be to
not
push success:not size:4
Left on stack: not or be to
to
push success:to size:5
Left on stack: to not or be to
be
push error, stack full
-
pop success:to size:4
Left on stack: not or be to
-
pop success:not size:3
Left on stack: or be to
-
pop success:or size:2
Left on stack: be to
-
pop success:be size:1
Left on stack: to
-
pop success:to size:0
Left on stack:
-
pop error, stack empty
算法(Algorithms)第4版 练习 1.3.1的更多相关文章
- 1.2 Data Abstraction(算法 Algorithms 第4版)
		1.2.1 package com.qiusongde; import edu.princeton.cs.algs4.Point2D; import edu.princeton.cs.algs4.St ... 
- 1.1 BASIC PROGRAMMING MODEL(算法 Algorithms 第4版)
		1.1.1 private static void exercise111() { StdOut.println("1.1.1:"); StdOut.println((0+15)/ ... 
- ubuntu命令行下java工程编辑与算法(第四版)环境配置
		ubuntu命令行下java工程编辑与算法(第四版)环境配置 java 命令行 javac java 在学习算法(第四版)中的实例时,因需要安装配套的java编译环境,可是在编译java文件的时候总是 ... 
- 配置算法(第4版)的Java编译环境
		1. 下载 1.1 JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html选择“Windows x64 180.5 ... 
- 算法(第四版)C# 习题题解——1.3.49 用 6 个栈实现一个 O(1) 队列
		因为这个解法有点复杂,因此单独开一贴介绍. 那么这里就使用六个栈来解决这个问题. 这个算法来自于这篇论文. 原文里用的是 Pure Lisp,不过语法很简单,还是很容易看懂的. 先导知识——用两个栈模 ... 
- 在Eclipse下配置算法(第四版)运行环境
		第一步:配置Eclipse运行环境 Eclipse运行环境配置过程是很简单的,用过Eclipse进行java开发或学习的同学应该都很熟悉这个过程了. 配置过程: (1)系统环境:Windows7 64 ... 
- 排序算法总结(C语言版)
		排序算法总结(C语言版) 1. 插入排序 1.1 直接插入排序 1.2 Shell排序 2. 交换排序 2.1 冒泡排序 2.2 快速排序 3. 选择 ... 
- 算法(第四版)C#题解——2.1
		算法(第四版)C#题解——2.1 写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csh ... 
- 《算法》第四版 IDEA 运行环境的搭建
		<算法>第四版 IDEA 运行环境的搭建 新建 模板 小书匠 在搭建之初,我是想不到会出现如此之多的问题.我看了网上的大部分教程,都是基于Eclipse搭建的,还没有使用IDEA搭建的教程 ... 
- 常见排序算法题(java版)
		常见排序算法题(java版) //插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.Sor ... 
随机推荐
- cocos2d-x 3.0 Android环境搭建(亲測通过)
			网上一大堆讲述coco2d-x 3.0 版本号的android环境搭建.真是不忍直視.讲的不清不楚,真是不知道他们自己有没有測试过.今天正好忙完项目有点时间去部署了下android环境. cocos2 ... 
- 修改NameNode端口后,hive表查询报错
			在进行使用hive查询表数据的时候,抛出异常 hive> select*from blackList;FAILED: SemanticException Unable to determine ... 
- who   查看系统登录用户
			who 查看所有登录用户 whoami 查看自己的登陆名 w users last 
- MyBatis随笔
			前一阵参与了一个项目的搭建,为了快速开发再加上学一些新东西,准备采用React+Spring MVC+MyBatis的架构. 花了一些时间最终把Spring MVC+MyBatis打通. 这里总结下M ... 
- 全站301跳转 PHP
			$the_host = $_SERVER['HTTP_HOST'];//取得当前域名 $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER[ ... 
- Unix编程第7章 进程环境
			准备雄心勃勃的看完APUE,但是总感觉看着看着就像进入一本字典,很多地方都是介绍函数的用法的,但是给出例子远不及函数介绍的多.而且这本书还是个大部头呢.第7章的讲的进程环境,进程是程序设计中一个比较重 ... 
- MIC中offload语法总结
			MIC中offload的用法如下: #pragma offload specifier [,specifier...]specifier可以填入的选项为:target 例:taget(mic:0)if ... 
- 让子元素在父元素中水平居中align-items
			做案例中,我们会发现让子元素在父元素中垂直居中,要设置margin和padding等,各种设置才能垂直居中 现在可以使用CSS3中的align-items实现 align-items 定义子元素在父元 ... 
- 国家制定人工智能(AI)发展战略的决策根据
			在今年两会上,李彦宏的提案有何道理?提案的依据是什么?这个问题必须说清楚,对社会公众有个交代. 回想过去,早在上世纪九十年代,用"电子网络"模拟人脑的想法已经出现.这样的" ... 
- 关于函数的return
			function add(x, y) { var total = x + y; return total; } add(5,10); 关于函数的return 我一开始是认为没有什么用的 后来在项目中 ... 
