Реализация метода получения стека - PullRequest
0 голосов
/ 03 декабря 2011

Я создал свой собственный класс Stack, но мне нужно реализовать метод get для возврата элемента стека на основе индекса, переданного в аргументах. Я создал метод contains и предположительно get получился бы аналогичным образом.

Мой вопрос: как мне реализовать метод get? Я хочу в основном реализовать метод get, который Stack наследует от класса Vector в стандартной библиотеке. Смотри - http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Vector.html#get%28int%29

Вот мой метод ниже.

public boolean contains (T value){

    T t = top.item; 
    Object node = t;
    while(node!=null)
    {
        if(node==value){
            return true;
        }
        else {
            node=top.next;
        }
    }
    return false;
}

1 Ответ

1 голос
/ 03 декабря 2011

Классический стек не поддерживает эту операцию и действительно не должен расширять Vector.

Поддерживаемые операции:

push(item)  
pop();  
peek(); 

Итак, что вы хотите сделать, если вы хотите использовать структуру данных для поддержки своего стека, это использовать экземпляр List, который позволит вам отразить то, что сделала оригинальная команда Sun.

 function contains(Item item)  
 {  
     return Stack.getList().contains(item)  
 } 

Если вместо этого вы хотите просто использовать массив в качестве основы, вам нужно будет перебрать каждое значение в массиве и выполнить сравнение с ним на равных.

function contains(Item item)  
{  
   for(int i = 0; i < itemArray.length;i++)  
   {  
      if(itemArray[i] == item)   
      {   
           return true;    
      }
   }
      return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...