2017-05-21 100 views
0

我是個字符串數據做我的項目,我必須做的堆棧搜索。如果新元素堆棧存在,它不會推,否則將推動。 但我不知道我怎麼能寫我自己的搜索代碼(stack.search是被禁止的,所以我必須寫我自己的一個).IM開明所有提示/技巧。謝謝:)搜索上堆棧

我的代碼是在這裏順便說一下:)

public boolean isEmpty() { 
    return first == null; 
} 

/** 
* Returns the number of items in this stack. 
* 
* @return the number of items in this stack 
*/ 
public int size() { 
    return n; 
} 

/** 
* Adds the item to this stack. 
* 
* @param item the item to add 
*/ 
public void push(Item item) { 
    Node<Item> oldfirst = first; 
    first = new Node<Item>(); 
    first.item = item; 
    first.next = oldfirst; 
    n++; 
} 

/** 
* Removes and returns the item most recently added to this stack. 
* 
* @return the item most recently added 
* @throws NoSuchElementException if this stack is empty 
*/ 
public Item pop() { 
    if (isEmpty()) throw new NoSuchElementException("Stack underflow"); 
    Item item = first.item;  // save item to return 
    first = first.next;   // delete first node 
    n--; 
    return item;     // return the saved item 
} 


/** 
* Returns (but does not remove) the item most recently added to this stack. 
* 
* @return the item most recently added to this stack 
* @throws NoSuchElementException if this stack is empty 
*/ 
public Item peek() { 
    if (isEmpty()) throw new NoSuchElementException("Stack underflow"); 
    return first.item; 
} 

/** 
* Returns a string representation of this stack. 
* 
* @return the sequence of items in this stack in LIFO order, separated by spaces 
*/ 
public String toString() { 
    StringBuilder s = new StringBuilder(); 
    for (Item item : this) { 
     s.append(item); 
     s.append(' '); 
    } 
    return s.toString(); 
} 
+0

您只顯示部分代碼。 –

回答

0

你所能做的僅僅是遍歷堆棧。這將在線性時間完成。

for(Item obj : stack) 
{ 
    // Do whatever processing you require 
    System.out.println(obj); 
}