【发布时间】:2016-09-21 18:41:54
【问题描述】:
我正在为班级做作业,它要求我使用实现基本堆栈数据结构的 Java 编程语言开发一种算法。
以下是场景:假设您正在为制造汽车的制造装配线开发一个系统。生产线上有三个工位,检查员将对车辆进行目视检查。您的程序必须在这些检查发生时对其进行跟踪。您决定使用堆栈数据结构开发程序。当您的车辆开始排队时,您将连续三次将数字 0(表示尚未进行检查)压入堆栈。在该行中的每个站点,您将从堆栈中弹出一个项目。每次您的算法从堆栈中弹出一个项目时,您必须使用 system.out.println 函数将其打印到控制台。我将在下面发布我的代码。我的代码是否代表这种情况?
我的代码:
import jeliot.io.*;
public class MyStack {
private int maxSize;
private long[] stackArray;
private int top;
public MyStack(int s) {
maxSize = s;
stackArray = new long[maxSize];
top = -1;
}
public void push(long j) {
stackArray[++top] = j;
}
public long pop() {
return stackArray[top--];
}
public long peek() {
return stackArray[top];
}
public boolean isEmpty() {
return (top == -1);
}
public boolean isFull() {
return (top == maxSize - 1);
}
public static void main(String[] args) {
MyStack theStack = new MyStack(5);
theStack.push(0);
theStack.push(1);
theStack.push(2);
theStack.push(3);
theStack.push(4);
while (!theStack.isEmpty()) {
long value = theStack.pop();
System.out.print(value);
System.out.print(" ");
}
System.out.println("");
}
}
作业还附带了一个链表示例代码。您可以将我的代码与示例进行比较。代码如下:
import Prog1Tools.IOTools;
class Node {
Node ptr;
int value;
public Node(int value) {
this.value = value;
}
}
public class CreateLinkedList {
public static void main(String[] args) {
Node link, plink;
// root will be the beginning of the linked list
Node root = new Node(5);
// each additional node will link to preceeding one
link = new Node(1);
link.ptr = root;
plink = link;
link = new Node(8);
link.ptr = plink;
plink = link;
link = new Node(6);
link.ptr = plink;
plink = link;
link = new Node(3);
link.ptr = plink;
plink = link;
// Move through the list and print out each value
printList(link);
}
public static void printList(Node node) {
if (node != null) {
System.out.println(" Value: " + node.value);
printList(node.ptr);
}
}
}
【问题讨论】:
-
您的代码是否代表这种情况?
-
是的,因为它适用于该场景吗?
-
我会把它扔给你,你的代码适用于这种情况吗?
-
@Liwizy 不清楚你在问什么。如果你问它是否有效,只需运行它并找出答案。
-
如果我遇到了这个作业问题,在我尝试实施之前,我必须请老师更好地解释它。我不明白原始作业中的说明。
标签: java data-structures stack