2016-10-26 313 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