1
+ package com .udemy .dsapart1 .stacks ;
2
+ import java .util .Scanner ;
3
+ import java .util .Stack ;
4
+
5
+ public class StackSorting {
6
+
7
+ static Stack <Double > firstStack ;
8
+ static Stack <Double > secStack ;
9
+
10
+ public static void main (String [] args ) {
11
+ Scanner scInpObj = new Scanner (System .in );
12
+ System .out .print ("\n Enter the size of Stack : " );
13
+ int sizeOfStack = scInpObj .nextInt ();
14
+ System .out .println ("\n Enter the stack elements : " );
15
+ firstStack = new Stack <>();
16
+ secStack =new Stack <>();
17
+ pushElementsIntoStack (sizeOfStack );
18
+ System .out .println ("\n Input Stack : " + firstStack );
19
+ System .out .println ("\n Output Stack sorted in increasing/ascending order : " +sortStackByAscOrder (firstStack ));
20
+ System .out .println ("\n Output Stack sorted in dicreasing/descending order : " +sortStackByDescOrder (secStack ));
21
+ }
22
+
23
+
24
+ private static Stack <Double > sortStackByAscOrder (Stack <Double > firstStack2 ) {
25
+ Stack <Double > tempStack = new Stack <>();
26
+ while (!firstStack2 .isEmpty ()) {
27
+ double peekOfSrcStack = firstStack2 .pop ();
28
+ while (!tempStack .isEmpty () && tempStack .peek () > peekOfSrcStack ) {
29
+ firstStack2 .push (tempStack .pop ());
30
+ }
31
+ tempStack .push (peekOfSrcStack );
32
+ }
33
+ return tempStack ;
34
+ }
35
+
36
+
37
+ private static Stack <Double > sortStackByDescOrder (Stack <Double > firstStack2 ) {
38
+ Stack <Double > tempStack = new Stack <>();
39
+ while (!firstStack2 .isEmpty ()) {
40
+ double peekOfSrcStack = firstStack2 .pop ();
41
+ while (!tempStack .isEmpty () && tempStack .peek () < peekOfSrcStack ) {
42
+ firstStack2 .push (tempStack .pop ());
43
+ }
44
+ tempStack .push (peekOfSrcStack );
45
+ }
46
+ return tempStack ;
47
+ }
48
+
49
+
50
+ private static void pushElementsIntoStack (int sizeOfStack ) {
51
+ Scanner scInp1Obj = new Scanner (System .in );
52
+ for (int i = 0 ; i < sizeOfStack ; i ++) {
53
+ System .out .print ("\n push the element No " + (i + 1 ) + " : " );
54
+ double dataItem =scInp1Obj .nextDouble ();
55
+ firstStack .push (dataItem );
56
+ secStack .push (dataItem );
57
+ }
58
+ }
59
+
60
+ }
0 commit comments