File tree 1 file changed +113
-0
lines changed 1 file changed +113
-0
lines changed Original file line number Diff line number Diff line change
1
+ package Stack ;
2
+
3
+ public class ImplementStack {
4
+
5
+ void push (int new_data )
6
+ {
7
+
8
+ /* allocate DLLNode and put in data */
9
+ DLLNode new_node = new DLLNode (new_data );
10
+ // if stack is empty
11
+ if (size == 0 ) {
12
+ head = new_node ;
13
+ mid = new_node ;
14
+ size ++;
15
+ return ;
16
+ }
17
+ head .next = new_node ;
18
+ new_node .prev = head ;
19
+
20
+ head = head .next ;
21
+ if (size % 2 != 0 ) {
22
+ mid = mid .next ;
23
+ }
24
+ size ++;
25
+ }
26
+ int pop ()
27
+ {
28
+ int data = -1 ;
29
+ /* Stack underflow */
30
+ if (size == 0 ) {
31
+ System .out .println ("Stack is empty" );
32
+ // return -1;
33
+ }
34
+
35
+ if (size != 0 ) {
36
+ data = head .data ;
37
+ if (size == 1 ) {
38
+ head = null ;
39
+ mid = null ;
40
+ }
41
+ else {
42
+ head = head .prev ;
43
+ head .next = null ;
44
+ if (size % 2 == 0 ) {
45
+ mid = mid .prev ;
46
+ }
47
+ }
48
+ size --;
49
+ }
50
+ return data ;
51
+ }
52
+ int findMiddle ()
53
+ {
54
+ if (size == 0 ) {
55
+ System .out .println ("Stack is empty now" );
56
+ return -1 ;
57
+ }
58
+ return mid .data ;
59
+ }
60
+
61
+ void deleteMiddleElement ()
62
+ {
63
+ // This function will not only delete the middle
64
+ // element
65
+ // but also update the mid in case of even and
66
+ // odd number of Elements
67
+ // when the size is even then findmiddle() will show the
68
+ // second middle element as mentioned in the problem
69
+ // statement
70
+ if (size != 0 ) {
71
+ if (size == 1 ) {
72
+ head = null ;
73
+ mid = null ;
74
+ }
75
+ else if (size == 2 ) {
76
+ head = head .prev ;
77
+ mid = mid .prev ;
78
+ head .next = null ;
79
+ }
80
+ else {
81
+ mid .next .prev = mid .prev ;
82
+ mid .prev .next = mid .next ;
83
+ if (size % 2 == 0 ) {
84
+ mid = mid .prev ;
85
+ }
86
+ else {
87
+ mid = mid .next ;
88
+ }
89
+ }
90
+ size --;
91
+ }
92
+ }
93
+ public static void main (String [] args ) {
94
+ myStack ms = new myStack ();
95
+ ms .push (11 );
96
+ ms .push (22 );
97
+ ms .push (33 );
98
+ ms .push (44 );
99
+ ms .push (55 );
100
+ ms .push (66 );
101
+ ms .push (77 );
102
+ ms .push (88 );
103
+ ms .push (99 );
104
+
105
+ System .out .println ("Popped : " + ms .pop ());
106
+ System .out .println ("Popped : " + ms .pop ());
107
+ System .out .println ("Middle Element : "
108
+ + ms .findMiddle ());
109
+ ms .deleteMiddleElement ();
110
+ System .out .println ("New Middle Element : "
111
+ + ms .findMiddle ());
112
+ }
113
+ }
You can’t perform that action at this time.
0 commit comments