1.在push(入栈)的时候,是先移动在顶端的箭头(+1),然后才插入数据。
2.在pop(出栈)的时候,是先把数据移除,然后使箭头下移一位(-1),
入栈和出栈的操作步骤正好相反。
比如stack是一个栈,top是其下标,如果要插入i到其栈中
则stact[++top] = i;
出栈则是stack[top--]
简单代码示例
package com.javaeye.liubey.algorithm.stack;
import org.lx.print.Print;
/**
*
* 项目名称:algorithm
* 包名称:com.javaeye.liubey.algorithm.stack
* 类名称:Stack.java
* 描述: 简单的栈测试类 使用数据模仿
* 创建人:Eason.Lau
* 创建时间:2010-7-16 下午03:11:41
* Copyright http://liubey.iteye.com/
* @version
*
*/
public class Stack {
public static void main(String[] args) {
StackX stack = new StackX(10);
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
//循环输出
while(!stack.isEmpty()) {
long value = stack.pop();
Print.printlnMeWithoutString(value);
}
}
}
/*
* 使用数组模仿栈
*/
class StackX {
private int maxSize;//最大容量
private long[] arrayStack;
private int top;//栈顶
public StackX(int n) {
maxSize = n;
arrayStack = new long[maxSize];
top = -1;
}
//入栈
public void push(long j) {
arrayStack[++top] = j;
}
//出栈
public long pop() {
return arrayStack[top--];
}
//查看
public long view() {
return arrayStack[top];
}
//栈是否是空
public boolean isEmpty() {
return (top == -1);
}
//栈是否满了
public boolean isFull() {
return (top == maxSize - 1);
}
}
最主要的还是入栈和出栈两个方法,printlnMeWithoutString就是简单打印的工具类,没什么,就是不爱输入Sys....而省事
分享到:
相关推荐
数据结构栈和队列的课程指导上几实验代码 相抵部分
《数据结构》课程第三次实验报告 实验报告(三) "姓名 " "学号 " "班级 " " "实验名称 "顺序栈的基本操作 "实验日期 " "机房 " " "实验报告 " "1. 说明自己在实验操作过程中遇到的难点及解决方法 " "难点: " "1....
数据结构 栈 表达式求值数据结构 栈 表达式求值数据结构 栈 表达式求值
栈和队列考试题 复习 栈和队列考试题 复习栈和队列考试题 复习
数据结构栈链式存储结构
数据结构栈的实现数据结构栈的实现数据结构栈的实现数据结构栈的实现数据结构栈的实现
数据结构中栈的操作,输入与输出,可以正常运行
数据结构栈和队列相关习题及答案
数据结构课件及课堂笔记 栈和队列 计算机类
VC++编写的MFC程序,动态演示栈的操作过程以及元素的插入删除,还包含两个关于栈的实例,一个是中缀转后缀,一个是表达式求值。
关于数据结构栈的表达式实验报告,自己写的,可以参考一下的吧,可以输入小数进行计算
9.定义并实现循环队列的数据结构。 10.应用队列完成Johnson问题(n个人围成一圈,每个人都有一个号码,从1..n,从1号报数,报到m号的出列,输出出列的号码顺序)。测试:10个人,报到3的出列。
长沙理工大学数据结构栈的实现与应用算术表达式求值实验报告.doc
数据结构栈实现表达式求值数据结构栈实现表达式求值数据结构栈实现表达式求值数据结构栈实现表达式求值
数据结构 栈 链表实现 c++ 是模板实现的
数据结构栈代码,代码结构清晰,很容易读懂,适合初学者学习,100%原装代码。
数据结构 栈的模板类线性表实现 基本就是弹入弹出 初始化栈内元素 判断栈上下限等
数据结构栈顺序存储结构
C语言数据结构栈的较高级应用
数据结构栈的基本知识以及算法。例如:栈的逻辑结构,栈的主要操作