在Java中使用堆栈堆栈

时间:2016-10-26 00:52:41

标签: java data-structures stack

我的作业有问题。我需要你能给我的所有帮助。

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

我应该实施的方法是:

  

initializeStack()   是空的()   已满()   推()   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;
    } }

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

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

这也是最初的问题。

  

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

1 个答案:

答案 0 :(得分: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