Skip to content

Commit 3ce4648

Browse files
committed
added problem of stack
1 parent 40be39c commit 3ce4648

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed

Stack/ImplementStack.java

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
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+
}

0 commit comments

Comments
 (0)