今天给各位分享javastackpoptop的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、java用栈实现四则运算带括号,一个栈装数字,一个栈装符号2、栈的特点是是什么3、仅使用Stack类中的构造函数、push()、peek()、pop()、以及empty()等方法实现任意长度数组的逆序4、栈的JAVA演示程序
java用栈实现四则运算带括号,一个栈装数字,一个栈装符号
一个栈装数字,一个栈装符号是将中缀表达市转换为后缀表达式
栈的特点是是什么
栈(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和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。