2016-10-26 206 views
-1

我的作业有问题。我需要你能给我的所有帮助。堆栈在java中使用堆栈

我需要创建一个可以存储任何类型数据的堆栈和一个与Stack类型的元素一起工作的堆栈的组合。我很困惑。

,我本来是要实现其方法是:

initializeStack() 的isEmpty() isFull() 推() POP() showStack() countElements()

这就是我到目前为止:

public class pilita { 
    Object vectorPila[]; 
    int tope; 
    public pilita(int tam){ 
     vectorPila=new Object[tam]; 
     tope=-1; 
    } 
    public void inicializarPila(){ 
     tope=-1; 
    } 
    public void push(Object dato){ 
     tope++; 
     vectorPila[tope]=dato; 
    } 
    public Object pop(){ 
     Object fuera=vectorPila[tope]; 
     tope--; 
     return fuera; 
    } 
    public boolean pilaVacia(){ 
     return tope==-1; 
    } 
    public boolean pilaLlena(){ 
     return vectorPila.length-1==tope; 
    } 
    public Object cima(){ 
     return vectorPila[tope]; 
    } 
    public Object contar(){ 
     return tope+1; 
    } } 

所有的方法都很好的实现(使用我的逻辑)。

但是我怎样才能使用这些方法使用堆栈数据类型的堆栈? 如果有人能帮助我,我将非常感激。

此处还有原始问题。

堆栈的小堆栈:数据结构的元素小堆栈是任何类型的数据。数据结构堆栈的元素是堆栈类型。

+0

“问题,要求作业帮助必须包括到目前为止你已经做解决问题的工作的总结,和你有解决它的难度的描述。” https://www.tutorialspoint.com/javaexamples/data_stack.htm – MikeJRamsey56

回答

0
// Java code for stack implementation 

import java.io.*; 
import java.util.*; 

class Test 
{ 
    // Pushing element on the top of the stack 
    static void stack_push(Stack<Integer> stack) 
    { 
     for(int i = 0; i < 5; i++) 
     { 
      stack.push(i); 
     } 
    } 

    // Popping element from the top of the stack 
    static void stack_pop(Stack<Integer> stack) 
    { 
     System.out.println("Pop :"); 

     for(int i = 0; i < 5; i++) 
     { 
      Integer y = (Integer) stack.pop(); 
      System.out.println(y); 
     } 
    } 

    // Displaying element on the top of the stack 
    static void stack_peek(Stack<Integer> stack) 
    { 
     Integer element = (Integer) stack.peek(); 
     System.out.println("Element on stack top : " + element); 
    } 

    // Searching element in the stack 
    static void stack_search(Stack<Integer> stack, int element) 
    { 
     Integer pos = (Integer) stack.search(element); 

     if(pos == -1) 
      System.out.println("Element not found"); 
     else 
      System.out.println("Element is found at position " + pos); 
    } 


    public static void main (String[] args) 
    { 
     Stack<Integer> stack = new Stack<Integer>(); 

     stack_push(stack); 
     stack_pop(stack); 
     stack_push(stack); 
     stack_peek(stack); 
     stack_search(stack, 2); 
     stack_search(stack, 6); 
    } 
} 

在Java中,他们被称为集合和类似于标准模板库C(STL)++。现在,你可以做的是定义一个void类型栈和强制转换它为不同类型的元素。

在C,stack.h有

typedef struct{ 
     void *elems; 
     int elemSize; 
     int allocLength; 
     int logLength; 
     void (*freefnc)(void *); 
    } Stack; 

void stackNew(Stack *s, int elemSize, void (*freefnc)(void *)); 
void stackDispose(Stack *s); 
void stackPush(Stack *s, void *elemAddr); 
void stackPop(Stack *s, void *target); 

你可以学习更多关于他们在这里下面的堆栈结构: -

http://www.geeksforgeeks.org/java/(见Java集合)

http://www.geeksforgeeks.org/c-plus-plus/#STL(见标准模板库(STL))

用于定义java中的void类型泛型引用: -

What's the difference between Void and no parameter?

https://coderanch.com/t/450693/java/pass-void-generic-parameter-type

+0

希望这有助于,如果它投票了;) – NeoR