Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class TaskStack {
- /**
- * create new stack with received data from input
- * @return
- */
- public static Stack<Integer> createStackFromInput() {
- Stack<Integer> stack = new Stack<Integer>();
- Scanner in = new Scanner(System.in);
- int val;
- System.out.println("enter val. to finish enter -999");
- val = in.nextInt();
- while(val!=-999) {
- stack.push(val);
- System.out.println("enter val. to finish enter -999");
- val = in.nextInt();
- }
- return stack;
- }
- public static Stack<Character> createStackFromInputcahr() {
- Stack<Character> stack = new Stack<Character>();
- Scanner in = new Scanner(System.in);
- char val;
- System.out.println("enter val. to finish enter -");
- val = in.next().charAt(0);
- while(val!='-') {
- stack.push(val);
- System.out.println("enter val. to finish enter -");
- val = in.next().charAt(0);
- }
- return stack;
- }
- public static <T> void addPopedVals(Stack<T> stack, Stack<T> tmpStack) {
- while(!tmpStack.isEmpty()) {
- stack.push(tmpStack.pop());
- }
- }
- //להגשה: כתבו פעולה המקבלת מחסנית וערך X ומחזירה את מספר המופעים של הערך X במחסנית.
- public static <T> int countVal (Stack<T>stack , T val ){
- int count = 0;
- Stack <T> tmpStack = new <T>Stack();
- addPopedVals(stack, tmpStack);
- System.out.println("The stcak" + stack.toString());
- while(!stack.isEmpty()) {
- T currentVal = stack.pop();
- if(currentVal.equals(val)) {
- count++;
- }
- }
- return count;
- }
- //return the min char . the stack change
- public static <T>Character minChar(Stack<Character>stack) {
- Stack <Character> tmpStack = new <Character>Stack();
- addPopedVals(stack, tmpStack);
- System.out.println("The stcak" + stack.toString());
- Character min = stack.pop();
- while(!stack.isEmpty()) {
- if(min>stack.pop()) {
- System.out.println("The stcak" + stack.toString());
- min=stack.top();
- stack.pop();
- }
- }
- return min;
- }
- //find min char and save the original stack
- public static <T>Character minCharSaveOrig(Stack<Character>stack) {
- Stack <Character> tmpStack = new <Character>Stack();
- addPopedVals(stack, tmpStack);
- return minChar(stack);
- }
- //כתבו פעולה המקבלת מחסנית ומיקום N ומחזירה את ערך האיבר הנמצא בעומק N
- //במחסנית. דוגמא: עבור N=4 יוחזר האיבר הרביעי מראש המחסנית. הנחה: קיים איבר בעומק N
- public static <T> int countOfStack(Stack<T>stack ) {
- Stack <T> tmpStack = new <T>Stack();
- int count = 0;
- T currentVal;
- while(!stack.isEmpty()) {
- currentVal = stack.pop();
- count++;
- tmpStack.push(currentVal);
- }
- addPopedVals(stack, tmpStack);
- return count ;
- }
- public static <T> T index(Stack<T>stack , int n) {
- Stack <T> tmpStack = new <T>Stack();
- int count = countOfStack(stack) ;
- //int CameLorid = count-n;
- T currentVal;
- for (int i = 0; i < n-1; i++) {
- currentVal = stack.pop();
- tmpStack.push(currentVal);
- }
- addPopedVals(stack, tmpStack);
- return stack.top();
- }
- public static <T> Stack reverse (Stack<T>stack) {
- Stack <T> tmpStack = new <T>Stack();
- Stack <T> reverseStack = new <T>Stack();
- T currentVal;
- while(!stack.isEmpty()) {
- currentVal=stack.pop();
- tmpStack.push(currentVal);
- reverseStack.push(currentVal);
- }
- addPopedVals(stack, tmpStack);
- return reverseStack;
- }
- public static void main(String[] args) {
- Stack <Integer>s1=createStackFromInput();
- //System.out.println(countVal(s1, 5));
- //Stack <Character>s1=createStackFromInputcahr();
- //System.out.println(minCharSaveOrig(s1));
- //System.out.println(index(s1, 3));
- //System.out.println("stack: "+ s1);
- System.out.println(reverse(s1));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement