javastackpoptop的简单介绍

今天给各位分享javastackpoptop的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、java用栈实现四则运算带括号,一个栈装数字,一个栈装符号2、栈的特点是是什么3、仅使用Stack类中的构造函数、push()、peek()、pop()、以及empty()等方法实现任意长度数组的逆序4、栈的JAVA演示程序

java用栈实现四则运算带括号,一个栈装数字,一个栈装符号

一个栈装数字,一个栈装符号是将中缀表达市转换为后缀表达式

javastackpoptop的简单介绍

栈的特点是是什么

栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线形表。

栈是一种数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。

栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一堆称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。 栈也称为后进先出表(LIFO表)。

1、进栈(PUSH)算法

①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);

②置TOP=TOP+1(栈指针加1,指向进栈地址);

③S(TOP)=X,结束(X为新进栈的元素);

2、退栈(POP)算法

①若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);

②X=S(SOP),(退栈后的元素赋给X);

③TOP=TOP-1,结束(栈指针减1,指向栈顶)。

仅使用Stack类中的构造函数、push()、peek()、pop()、以及empty()等方法实现任意长度数组的逆序

// stack.java

// demonstrates stacks

// to run this program: Cjava StackApp

////////////////////////////////////////////////////////////////

class StackX

{

private int maxSize; // size of stack array

private long[] stackArray;

private int top; // top of stack

//————————————————————–

public StackX(int s) // constructor

{

maxSize = s; // set array size

stackArray = new long[maxSize]; // create array

top = -1; // no items yet

}

//————————————————————–

public void push(long j) // put item on top of stack

{

stackArray[++top] = j; // increment top, insert item

}

//————————————————————–

public long pop() // take item from top of stack

{

return stackArray[top–]; // access item, decrement top

}

//————————————————————–

public long peek() // peek at top of stack

{

return stackArray[top];

}

//————————————————————–

public boolean isEmpty() // true if stack is empty

{

return (top == -1);

}

//————————————————————–

public boolean isFull() // true if stack is full

{

return (top == maxSize-1);

}

public void tofun(long a,long b,long c,long d,long e,long f,long g,long h,long i,long k)

{

push(a);

push(b);

push(c);

push(d);

push(e);

push(f);

push(g);

push(h);

push(i);

push(k);

}

}

class StackApp

{

public static void main(String[] args)

{

StackX stackX=new StackX(10);

stackX.tofun(1,2,3,4,5,6,7,8,9,10);

while( !stackX.isEmpty() ) // until it’s empty,

{ // delete item from stack

long value = stackX.pop();

System.out.print(value); // display it

System.out.print(” “);

} // end while

System.out.println(“”);

}

}

栈的JAVA演示程序

给你发3个类 这个是《java数据结构和算法》那本书上关于栈的演示程序 我反编译过来的 你可以参考参考 我没有仔细看过 如果有什么问题再hi我吧 我们一起研究研究

// Source File Name: Stack.java

import java.applet.Applet;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.EventObject;

public class Stack extends Applet

implements Runnable, ActionListener

{

private Thread runner;

private personGroup thePersonGroup;

private int GPNumber;

private boolean isNumber;

private TextField tf;

private Button newButton;

private Button pushButton;

private Button popButton;

private Button peekButton;

public void init()

{

setLayout(new FlowLayout());

Panel panel = new Panel();

add(panel);

panel.setLayout(new FlowLayout());

Panel panel1 = new Panel();

panel.add(panel1);

panel1.setLayout(new FlowLayout(0));

newButton = new Button(“New”);

panel1.add(newButton);

newButton.addActionListener(this);

pushButton = new Button(“Push”);

panel1.add(pushButton);

pushButton.addActionListener(this);

popButton = new Button(“Pop”);

panel1.add(popButton);

popButton.addActionListener(this);

peekButton = new Button(“Peek”);

panel1.add(peekButton);

peekButton.addActionListener(this);

Panel panel2 = new Panel();

panel.add(panel2);

panel2.setLayout(new FlowLayout(2));

panel2.add(new Label(“Number: “));

panel2.add(tf);

thePersonGroup = new personGroup();

thePersonGroup.doFill();

repaint();

}

public void start()

{

if(runner == null)

{

runner = new Thread(this);

runner.start();

}

}

public void stop()

{

if(runner != null)

{

runner.stop();

runner = null;

}

}

public void paint(Graphics g)

{

thePersonGroup.draw(g);

}

public void update(Graphics g)

{

paint(g);

}

public void actionPerformed(ActionEvent actionevent)

{

isNumber = true;

String s = tf.getText();

try

{

GPNumber = Integer.parseInt(s);

}

catch(NumberFormatException _ex)

{

GPNumber = 0;

isNumber = false;

}

if(actionevent.getSource() == newButton)

thePersonGroup.newStack();

else

if(actionevent.getSource() == pushButton)

thePersonGroup.push(isNumber, GPNumber);

else

if(actionevent.getSource() == popButton)

{

String s1 = thePersonGroup.pop();

tf.setText(s1);

} else

if(actionevent.getSource() == peekButton)

{

String s2 = thePersonGroup.peek();

tf.setText(s2);

}

repaint();

try

{

Thread.sleep(10L);

return;

}

catch(InterruptedException _ex)

{

return;

}

}

public void run()

{

do

;

while(true);

}

public Stack()

{

GPNumber = -1;

isNumber = false;

tf = new TextField(“”, 4);

}

}

// Source File Name: Person.java

import java.awt.Color;

class person

{

private int height;

private Color color;

public person(int i, Color color1)

{

height = i;

color = color1;

}

public Color getColor()

{

return color;

}

public int getHeight()

{

return height;

}

}

// Source File Name: personGroup.java

import java.awt.Color;

import java.awt.Graphics;

class personGroup

{

private final int appletWidth = 440;

private final int appletHeight = 300;

private final int topMargin = 80;

private final int leftMargin = 10;

private final int centerX = 175;

private final int textHeight = 13;

private final int hF1 = 12;

private final int hF2 = 6;

private final int hF3 = 0;

private final int vF = 8;

private final int cellWidth = 35;

private final int cellHeight = 17;

private final int digits3Width = 18;

private final int noteBoxTop = 55;

private final int noteBoxHeight = 25;

private final int noteBoxWidth = 325;

private final int ASIZE = 10;

private final int INIT_NUM = 4;

private final int MAX_KEY = 999;

private person stackArray[];

private int nPersons;

private person tempPers;

private String note;

private int insKey;

private String returnString;

private int codePart;

private int opMode;

private int curIn;

private int oldCurIn;

private int drawMode;

public personGroup()

{

stackArray = new person[11];

curIn = oldCurIn = 0;

nPersons = 0;

codePart = 1;

drawMode = 2;

note = “Press any button”;

}

public person makePerson(int i)

{

int j = 100 + (int)(Math.random() * 154D);

int k = 100 + (int)(Math.random() * 154D);

int l = 100 + (int)(Math.random() * 154D);

Color color = new Color(j, k, l);

return new person(i, color);

}

public void newStack()

{

if(opMode != 1)

{

opMode = 1;

codePart = 1;

}

switch(codePart)

{

case 1: // ‘\001’

note = “Will create new, empty stack”;

drawMode = 1;

codePart = 2;

return;

case 2: // ‘\002’

stackArray = new person[10];

for(int i = 0; i 10; i++)

stackArray[i] = null;

nPersons = 0;

oldCurIn = curIn;

curIn = 0;

note = “New stack created”;

drawMode = 2;

codePart = 3;

return;

case 3: // ‘\003’

note = “Press any button”;

drawMode = 1;

codePart = 1;

return;

}

}

public void doFill()

{

for(int i = 0; i 10; i++)

stackArray[i] = null;

for(int j = 0; j 4; j++)

{

int k = (int)(Math.random() * 999D);

tempPers = makePerson(k);

stackArray[j] = tempPers;

}

nPersons = 4;

oldCurIn = curIn;

curIn = nPersons;

}

public void push(boolean flag, int i)

{

if(opMode != 2)

{

opMode = 2;

codePart = 1;

}

switch(codePart)

{

default:

break;

case 1: // ‘\001’

note = “Enter key of item to push”;

codePart = 2;

break;

case 2: // ‘\002’

if(!flag || i 0 || i 999)

{

note = “CAN’T PUSH: need key between 0 and ” + 999;

codePart = 1;

break;

}

if(nPersons 9)

{

note = “CAN’T PUSH: stack is full”;

codePart = 5;

} else

{

insKey = i;

note = “Will push item with key ” + insKey;

tempPers = makePerson(insKey);

codePart = 3;

}

break;

case 3: // ‘\003’

nPersons++;

oldCurIn = curIn;

curIn = nPersons;

note = “Incremented top”;

codePart = 4;

break;

case 4: // ‘\004’

stackArray[nPersons – 1] = tempPers;

note = “Inserted item with key ” + insKey + ” at top”;

codePart = 5;

break;

case 5: // ‘\005’

note = “Press any button”;

codePart = 1;

break;

}

drawMode = 1;

}

public String pop()

{

if(opMode != 3)

{

opMode = 3;

codePart = 1;

}

switch(codePart)

{

default:

break;

case 1: // ‘\001’

if(nPersons == 0)

{

note = “CAN’T POP: stack is empty”;

codePart = 4;

} else

{

note = “Will pop item from top of stack”;

codePart = 2;

}

returnString = “”;

drawMode = 1;

break;

case 2: // ‘\002’

returnString = String.valueOf(stackArray[nPersons – 1].getHeight());

stackArray[nPersons – 1] = null;

note = “Item removed; value returned in Number”;

drawMode = 2;

codePart = 3;

break;

case 3: // ‘\003’

nPersons–;

oldCurIn = curIn;

curIn = nPersons;

note = “Decremented top”;

drawMode = 1;

codePart = 4;

break;

case 4: // ‘\004’

note = “Press any button”;

drawMode = 1;

codePart = 1;

break;

}

return returnString;

}

public String peek()

{

if(opMode != 4)

{

opMode = 4;

codePart = 1;

}

switch(codePart)

{

default:

break;

case 1: // ‘\001’

if(nPersons == 0)

{

note = “CAN’T PEEK: stack is empty”;

codePart = 3;

} else

{

note = “Will peek at item at top of stack”;

codePart = 2;

}

returnString = “”;

drawMode = 1;

break;

case 2: // ‘\002’

returnString = String.valueOf(stackArray[nPersons – 1].getHeight());

note = “Value returned in Number”;

drawMode = 1;

codePart = 3;

break;

case 3: // ‘\003’

note = “Press any button”;

drawMode = 1;

codePart = 1;

break;

}

return returnString;

}

public void drawPerson(Graphics g, int i)

{

char c = ‘\257’;

int j = 300 – (40 + 17 * i);

if(i != 10)

{

byte byte0;

if(i 10)

byte0 = 12;

else

if(i 100)

byte0 = 6;

else

byte0 = 0;

g.setColor(Color.black);

g.drawString(String.valueOf(i), c + byte0, (j + 17) – 8);

g.setColor(Color.black);

g.drawRect(c + 18 + 5, j – 5, 35, 17);

if(stackArray[i] == null)

{

g.setColor(Color.lightGray);

g.fill3DRect(c + 18 + 6, j – 4, 34, 16, true);

} else

{

int k = stackArray[i].getHeight();

g.setColor(stackArray[i].getColor());

g.fill3DRect(c + 18 + 6, j – 4, 34, 16, true);

byte byte1;

if(k 10)

byte1 = 12;

else

if(k 100)

byte1 = 6;

else

byte1 = 0;

g.setColor(Color.black);

g.drawString(String.valueOf(k), c + 18 + byte1 + 15, (j + 17) – 8);

}

}

if(i == curIn)

g.setColor(Color.red);

else

g.setColor(Color.lightGray);

int l = c + 18 + 8 + 35;

int i1 = (j + 25) – 4;

g.drawLine(l, i1, l + 20, i1);

g.drawLine(l, i1 + 1, l + 20, i1 + 1);

g.drawLine(l, i1, l + 5, i1 – 5);

g.drawLine(l, i1 + 1, l + 5, i1 – 4);

g.drawLine(l, i1, l + 5, i1 + 5);

g.drawLine(l, i1 + 1, l + 5, i1 + 6);

g.drawString(“Top”, l + 23, i1 + 5);

}

public void draw(Graphics g)

{

if(drawMode == 1)

{

g.setColor(Color.lightGray);

g.fillRect(10, 55, 325, 25);

g.setColor(Color.black);

g.drawString(note, 16, 74);

drawPerson(g, oldCurIn);

drawPerson(g, curIn);

drawMode = 2;

return;

}

g.setColor(Color.lightGray);

g.fillRect(0, 0, 440, 300);

g.setColor(Color.black);

g.drawString(note, 16, 74);

for(int i = 0; i 10; i++)

drawPerson(g, i);

drawPerson(g, 10);

}

}

关于javastackpoptop和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月2日 20:09:23
下一篇 2024年4月2日 20:16:36

相关推荐

  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    3800
  • javascriptcanvas的简单介绍

    如何使用js在画布上绘制图形 1、可以使用 drawImage()方法把一幅图像绘制到画布上。 以使用三种不同的参数组合。最简单的调用方式是传入一个 HTML 元素,以及绘制该图像的起点的 x 和 y 坐标。 2、效果图:使用JavaScript在画布中绘制文本图形首先我们来看看要在画布上绘制文本图形,需要用到的最重要的属性和方法:font属性:定义文本的字…

    2024年5月23日
    3700
  • cortexm4linux的简单介绍

    Cortex-M4的主要功能 Cortex-M4提供了无可比拟的功能,以将[1] 32位控制与领先的数字信号处理技术集成来满足需要很高能效级别的市场。 Cortex-M4核心具有浮点单元(FPU)单精度,支持所有Arm单精度数据处理指令和数据类型。它还实现了一套完整的DSP指令和一个提高应用程序安全性的内存保护单元(MPU)。 主要是m4比m3多了dsp的支…

    2024年5月23日
    3700
  • 3desjavaphp的简单介绍

    php的3des加密结果与java不一致 他们的加密算法都是通用的,是可以解开的,只要你des的模式,加密长度,初始向量什么的都一样就可以。 JAVA写RSA加密,私钥都是一样的,公钥每次加密的结果不一样跟对数据的padding(填充)有关。Padding(填充)属性定义元素边框与元素内容之间的空间。padding简写属性在一个声明中设置所有内边距属性。 要…

    2024年5月23日
    4100
  • 黑客代码软件学习推荐歌曲的简单介绍

    我想自学编程代码,,目地是“黑”网站,开发出破解代码。有没有这方面的… 这个迭代周期不应该以周为周期或以月为周期发生,而是应该以日为周期。知识等待使用的时间越久,知识这把斧头就越钝。等待学习新知识的时间越长,你就越难以将其融入到代码中。 我认为这个问题问得本身就显得有点矛盾,想学却担心自己看不懂代码学不来,试问哪个编程人员不是从零开始的。坚定信念…

    2024年5月23日
    4000
  • java8种基本类型范围的简单介绍

    java中常用的数据类型有哪些 1、java数据类型分为基本数据类型和引用数据类型,基本数据类型有boolean 、long 、int 、char、byte、short、double、float。引用数据类型有类类型、接口类型和数组类型。 2、java中包含的基本数据类型介绍:\x0d\x0aJava共支持8种内置数据类型。内置类型由Java语言预先定义好,…

    2024年5月23日
    4200
  • linux系统与gpt的关系的简单介绍

    linux下查看分区是不是gpt 看分区会报错,比如:WARNING: GPT (GUID Partition Table) detected on /dev/sda! The util fdisk doesnt support GPT. Use GNU Parted.所以这个sda就是gpt的。 选择“管理”;在“磁盘管理”中,右键“磁盘0”,在弹出的右键…

    2024年5月23日
    4800
  • 北京黑客学习培训的简单介绍

    现在学什么好啊 包括建筑设计、服装设计、珠宝首饰设计等,选择适合自己的设计专业,好好学习,就业容易且收入高。学前教育专业:很多女生喜欢小孩子,且女生一般细心且有耐心,教育行业假期宽裕,工作环境单纯,就业机会多。 现在比较热门好就业的专业有人工智能、机械专业、电子商务专业、人力资源专业、金融学专业、小语种类专业等等。人工智能:人工智能领域的研究包括机器人、语言…

    2024年5月23日
    3600
  • javaee要学那些东西的简单介绍

    java主要学习哪些内容 1、学java最重要的是下面四个内容:掌握Java语言的使用:语言语法、程序逻辑,OOP(面向对象)思想,封装、继承、多态,集合框架、泛型、File I\O技术,多线程技术、socket网络编程,XML技术。 2、Java基础:了解Java的基本语法、数据类型、控制流程、数组、字符串等基础概念。学习面向对象编程(OOP)的原则和概念…

    2024年5月23日
    3700
  • excel自杀的简单介绍

    excel表格中宏代码,具有自杀功能,密码输入错误3次就自动删除表格_百度… 我给楼主一个建议,利用excel自身的密码保护,保护此工作簿的结构,将sheet提前隐藏。这样如果有人将同一份excel打开时,如果不能输入正确的密码,就不能将sheet取消隐藏,就能达到楼主所说的保护了。 如果你还有源文件的话,可以这样试试:打开其他的excel文件,…

    2024年5月23日
    7500

发表回复

登录后才能评论



关注微信