2014-11-27 2 views
0

자바에서 스택에 5 개의 정수가 포함되어 있지만 값만 동일하게 인쇄해야합니다.스택 내에서 동일한 값 가져 오기

예 1-2 - 2 - 3-4 같은 번호는 : 2

어떻게의 같은 번호를하게 확인할 수 있습니까?

package e.d_pilas; 

import java.util.*; 

public class ED_PILAS { 
    private int stck[]; 
    private int tos; 

    ED_PILAS(int size){ 
     //New stack 
     stck = new int[size]; 
     tos = -1; 
    } 

    void push(int value) { 
     stck[++tos] = value; 
    } 

    int pop() { 
     if (tos < 0) { 
      return 0; 
     } else 
      return stck[tos--]; 
    } 

    public static void main(String[] args) { 
     int number; 
     Scanner read = new Scanner (System.in); 
     System.out.print("Enter five (5) numbers to fill the stack \n"); 
     ED_PILAS stack = new ED_PILAS(5); 

     for (int i = 1; i < 6; i++){ 
      System.out.print("Enter the value "+i+" to fill the stack \n"); 
      number=read.nextInt(); 
      stack.push(number); 
     } 
     System.out.println("Equal values contained in the stack: \n"); 

     for (int j = 1; j < 6; j++){ 
      System.out.println("\t " + stack.pop());  
     } 
    } 
} 

감사합니다 : 여기

내 코드입니다!

+0

개 이상의 같은 번호가 무엇인지 경우 ? –

+0

@SarthakMittal도 두 개 이상인 경우 표시 –

+0

Stack을 사용하는 것이 정말 필요합니까? –

답변

0

첫 번째 방법에서는 중복 항목을 한 번만 인쇄합니다. 2 번째의 메소드에서는, 스택에 2 개 이상의 엔트리가 포함되는 경우, 복수 회 인쇄됩니다.

 ArrayList<int> list=new ArrayList<int>(); 

     for (int j = 1; j < 6; j++){ 
      int num=stack.pop(); 
      if(list.contains(num)){ 
       System.out.println(num); 
      } 
      else{ 
       list.add(num); 
      } 

     } 

또는 stack.pop() 방법은 요소는 다음 중복

  for (int j = 1; j < 6; j++){ 
      int num=stack.pop(); 
      if(stack.search(num)==1){ 
       System.out.println(num); 
      } 
      else{ 

      } 

     } 
+0

방법은 가장 논리적이고 구현하기 쉽다. –

0

스택에서 pop()을 수행하는 동안 ArrayList<Integer>에 저장하고 pop()이 이미 존재하는지 확인하십시오. 반복되는 경우 인쇄하고 인쇄 된 것으로 표시하십시오 (다시 인쇄하지 마십시오).

0

사용이 논리는 달리 사용하는 연속 같은 값에 대해 작동의 ArrayList를 찾기 위해 stack.search() 방법을 사용하여 제거합니다

int n=stack.pop(); int dummy; for (int j = 1; j < 6; j++){ dummy=stack.pop(); if(n==dummy) { System.out.println("\t The same number is " + n); } else{ n=dummy; }

0

ArrayList를 사용하여 이전 팝업 값을 저장합니다. 팝 중에이 값이 다시 표시되면 번호를 인쇄하십시오. 당신은이 같은 중복 된 값을 반환에 팝업 기능을 편집 할 수있는 대신 주요 기능을 변경하는 또한

More info on ArrayLists

ArrayList<Integer> popdList=new ArrayList<Integer>(); 

for (int j = 1; j < 6; j++){ 
    int value=stack.pop(); 
    if(popdList.contains(value){ 
     System.out.println(value); 
    } else{ 
     popdList.add(value); 
    } 
} 
:

ArrayList<Integer> popdList=new ArrayList<Integer>(); 

int pop() { 
    if (tos < 0) { 
     return 0; 
    } else { 
     int value = stck[tos--]; 
     if(popdList.contains(value){ 
      return value; 
     } else{ 
      popdList.add(value); 
     } 
    } 
} 
관련 문제