0% found this document useful (0 votes)
7 views

Stack Using Arrays

Uploaded by

Backroom Hero
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Stack Using Arrays

Uploaded by

Backroom Hero
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 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

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy