Stack Using Arrays

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

 Stack Using Arrays:

public class ArrayStack {


private int maxSize;
private int[] stackArray;
private int top;

// Constructor
public ArrayStack(int size) {
maxSize = size;
stackArray = new int[maxSize];
top = -1;
}

// Push method to add an element to the stack


public void push(int value) {
if (isFull()) {
System.out.println("Stack is full. Cannot push " + value);
} else {
top++;
stackArray[top] = value;
System.out.println(value + " pushed to stack");
}
}

// Pop method to remove and return the top element from the stack
public int pop() {
if (isEmpty()) {
System.out.println("Stack is empty. Cannot pop.");
return -1;
} else {
int poppedValue = stackArray[top];
top--;
return poppedValue;
}
}

// Peek method to return the top element without removing it


public int peek() {
if (isEmpty()) {
System.out.println("Stack is empty. Cannot peek.");
return -1;
} else {
return stackArray[top];
}
}
// Check if the stack is empty
public boolean isEmpty() {
return (top == -1);
}

// Check if the stack is full


public boolean isFull() {
return (top == maxSize - 1);
}

// Main method to test the ArrayStack


public static void main(String[] args) {
ArrayStack stack = new ArrayStack(5);

stack.push(10);
stack.push(20);
stack.push(30);

System.out.println("Top element: " + stack.peek());

System.out.println(stack.pop() + " popped from stack");


System.out.println(stack.pop() + " popped from stack");

stack.push(40);
System.out.println("Top element: " + stack.peek());
}
}
 Queue
public class Linear_queue
{
int q[],maxsize,front,rear;
void create_queue(int size)
{
maxsize=size;
front=0;
rear=-1;
q=new int[maxsize];
}
void enqueue(int e)
{
//q[++rear]=e;
rear++;
q[rear]=e;
}

boolean is_full()
{
if(rear==maxsize-1)
return true;
else
return false;
}

int dequeue()
{
int temp=q[front];
front++;
return temp;
}
boolean is_empty()
{
if(front>rear)
return true;
else
return false;
}
void print_queue()
{
for(int i=front;i<=rear;i++)
System.out.print(q[i]+"--");
}
}
 Circular Queue:
public class Circular_queue
{
int q[],maxsize,front,rear,count;
void create_queue(int size)
{
maxsize=size;
front=0;
rear=-1;
count=0;
q=new int[maxsize];
}
void enqueue(int e)
{
//q[++rear]=e;
rear=(rear+1)%maxsize;
count++;
q[rear]=e;
}

boolean is_full()
{
if(count==maxsize)
return true;
else
return false;
}

int dequeue()
{
int temp=q[front];
front=(front+1)%maxsize;
count--;
return temp;
}
boolean is_empty()
{
if(count==0)
return true;
else
return false;
}
void print_queue() {
int c = 0;
int i = front;
while (c < count) {
System.out.print(q[i] + "--");
i = (i + 1) % maxsize;
c++;
}
}

}
 Priority Queue:
import java.util.Scanner;

public class Priority_queue


{
int q[],maxsize,front,rear;
void create_queue(int size)
{
maxsize=size;
front=0;
rear=-1;
q=new int[maxsize];
}
void enqueue(int e)
{
//q[++rear]=e;
rear++;
q[rear]=e;
for(int i=front;i<rear;i++) {
for (int j = front; j < rear; j++) {
if(q[j]>q[j+1])
{
int temp=q[j];
q[j]=q[j+1];
q[j+1]=temp;
}

}
}
}

boolean is_full()
{
if(rear==maxsize-1)
return true;
else
return false;
}

int dequeue()
{
int temp=q[front];
front++;
return temp;
}
boolean is_empty()
{
if(front>rear)
return true;
else
return false;
}
void print_queue()
{
for(int i=front;i<=rear;i++)
System.out.print(q[i]+"--");
}

public class Queue_Main


{
public static void main(String args[])
{
int ch;
Scanner in=new Scanner(System.in);
Linear_queue obj=new Linear_queue ();
System.out.println("Enter size of queue:");
int size=in.nextInt();
obj.create_queue(size);//user given size :stack
do
{
System.out.println("1.Enqueue\n2.Dequeue\n3.Print\n0.Exit\n:");
ch=in.nextInt();
switch(ch)
{
case 1:
if(!obj.is_full())//if not full then take data
{
System.out.println("Enter data to insert:");
int e=in.nextInt();
obj.enqueue(e);
System.out.println("Data to enqueued");
}
else {
System.out.println("Queue Full");
}
break;
case 2:
if(!obj.is_empty())//if not Empty then dequeue
{
int e=obj.dequeue();
System.out.println("Data dequeued:"+e);
}
else
{
System.out.println("Queue Empty");
}
break;
case 3:
if(!obj.is_empty())//if not Empty then print
{
System.out.println("Data in queue");
obj.print_queue();
}
else
{
System.out.println("Queue Empty");
}
break;
case 0:
System.out.println("Exiting.....");
break;
default:
System.out.println("Wrong option selected");
break;
}
}while(ch!=0);
}

}
 LinkedList
public class Node
{
int data;
Node next;//self ref structure
Node(int data)
{
this.data=data;
this.next=null;//next=null;
}
}

public class Linear_linked_list


{
Node root;

void create_list()
{
root=null;//root is not there
}
void insert_left(int e)
{
Node n=new Node(e);
if(root==null)//not there then n is root
root=n;
else
{
n.next=root;//1
root=n;//2
}
System.out.println(e+" inserted");

}
void insert_right(int e)
{
Node n=new Node(e);//created
if(root==null)//not there then n is root
root=n;
else
{
Node t=root;//1
while(t.next!=null)//2
t=t.next;
t.next=n;//3
}
System.out.println(e+" inserted");
}

void delete_left()
{
if(root==null)//not there then n is root
System.out.println("Empty list");
else
{
Node t=root;//1
root=root.next;//2
System.out.println(t.data+" deleted");
}
}
void delete_right()
{
if(root==null)//not there then n is root
System.out.println("Empty list");
else
{
Node t=root;//1
Node t2=t;//1
while(t.next!=null)//2
{
t2=t;
t=t.next;
}
if (t==root)//one node only
root=null;
else
t2.next = null;//3

System.out.println(t.data+" deleted");
}
}
void print_list()
{ if(root==null)
System.out.println("Empty list");
else
{
Node t=root;//1
while(t!=null)
{
System.out.print("|"+t.data+"|->");
t=t.next;
}
}
}
void search_list(int key)
{ if(root==null)
System.out.println("Empty list");
else
{
Node t=root;//1
while(t!=null)
{
if(t.data==key)
break;
t=t.next;
}
if(t==null)
System.out.println(key+" Not Found");
else
System.out.println(key+" Found");
}
}
}
public class Linked_List_Main
{
public static void main(String args[])
{
int ch,e;
Scanner in = new Scanner(System.in);
Linear_linked_list obj = new Linear_linked_list();
obj.create_list();//user given size :list
do {
System.out.println("\n1.Insert Left\n2.Insert Right\n3.Delete
Left\n4.Delete Right\n5.Print List\n6.Search\n0.Exit\n:");
ch = in.nextInt();
switch (ch) {
case 1:
System.out.println("Enter data:");
e = in.nextInt();
obj.insert_left(e);
break;
case 2:
System.out.println("Enter data:");
e = in.nextInt();
obj.insert_right(e);
break;
case 3:
obj.delete_left();
break;
case 4:
obj.delete_right();
break;
case 5:
obj.print_list();
break;
case 6:
System.out.println("Enter data:");
e = in.nextInt();
obj.search_list(e);
break;
case 0:
System.out.println("Exiting.....");
break;
default:
System.out.println("Wrong option selected");
break;
}
} while (ch != 0);
}
}

You might also like