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

DSA LAB Task 1

Assignment

Uploaded by

sk33527689
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)
18 views

DSA LAB Task 1

Assignment

Uploaded by

sk33527689
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/ 7

LAB MANUAL

Subject: Data Structures & Algorithms

Department of Computer Science


Federal Urdu university of arts, Science and technology,
Islamabad
Task # 01
Program: Write an algorithm of push() & pop() operation in stack and also
write the algorithm of ispeek(), isfull(), isempty() stack implementation.

#include <iostream>
using namespace std;

// Define a constant for the maximum size of the stack


#define MAX_SIZE 100

// Define a Stack class


class Stack {
private:
int top; // Index of the top element
int stack[MAX_SIZE]; // Array to store stack elements

public:
// Constructor to initialize the stack
Stack() {
top = -1; // Initialize top to -1 (empty stack)
}

// Function to push an item onto the stack


void push(int item) {
// Check for stack overflow
if (top == MAX_SIZE - 1) {
cout << "Stack overflow!" << endl;
return;
}
// Increment top and add item to the stack
stack[++top] = item;
}

// Function to pop an item from the stack


int pop() {
// Check for stack underflow
if (top == -1) {
cout << "Stack underflow!" << endl;
return -1; // Return -1 to indicate error
Page 2 of 7
}
// Decrement top and return the popped item
return stack[top--];
}

// Function to peek at the top item


int peek() {
// Check if the stack is empty
if (top == -1) {
cout << "Stack is empty!" << endl;
return -1; // Return -1 to indicate error
}
// Return the top item without removing it
return stack[top];
}

// Function to check if the stack is empty


bool isempty() {
return top == -1;
}

// Function to print the stack


void printStack() {
// Check if the stack is empty
if (top == -1) {
cout << "Stack is empty!" << endl;
return;
}
// Print the stack from top to bottom
cout << "Stack (top to bottom):" << endl;
for (int i = top; i >= 0; i--) {
cout << stack[i] << endl;
}
}
};

// Main function
int main() {
// Create a Stack object
Stack stack;
Page 3 of 7
// Push items onto the stack
stack.push(5);
stack.push(10);
stack.push(20);
stack.push(30);

// Peek at the top item


cout << "Peek: " << stack.peek() << endl;

// Pop two items from the stack


stack.pop();
stack.pop();

// Print the remaining stack


stack.printStack();

return 0;
}

Explanation:
1. Header Inclusion and Namespace

#include <iostream>
using namespace std;
Includes the iostream header for input/output operations and brings the standard
library namespace into scope.

2. Constant Definition

#define MAX_SIZE 100


Defines a constant MAX_SIZE to specify the maximum size of the stack.

3. Stack Class Definition

class Stack {
private:
int top;
int stack[MAX_SIZE];

Page 4 of 7
public:
// ...
};
Defines a Stack class with private members top (index of the top element) and
stack (array to store elements). Public member functions provide operations on the
stack.

4. Constructor

Stack() {
top = -1;
}
Initializes the stack by setting top to -1, indicating an empty stack.

5. Push Operation

void push(int item) {


if (top == MAX_SIZE - 1) {
cout << "Stack overflow!" << endl;
return;
}
stack[++top] = item;
}
Adds an item to the stack:
 Checks for stack overflow (top reaches MAX_SIZE).
 Increments top and stores the item at the new top index.

6. Pop Operation

int pop() {
if (top == -1) {
cout << "Stack underflow!" << endl;
return -1;
}
return stack[top--];
}
Removes an item from the stack:
 Checks for stack underflow (top is -1).
 Returns the top item and decrements top.

Page 5 of 7
7. Peek Operation

int peek() {
if (top == -1) {
cout << "Stack is empty!" << endl;
return -1;
}
return stack[top];
}
Returns the top item without removing it:
 Checks if the stack is empty.
 Returns the top item.

8. IsEmpty Operation

bool isempty() {
return top == -1;
}

Checks if the stack is empty

9. Print Stack Operation

void printStack() {
if (top == -1) {
cout << "Stack is empty!" << endl;
return;
}
cout << "Stack (top to bottom):" << endl;
for (int i = top; i >= 0; i--) {
cout << stack[i] << endl;
}
}
Prints the stack from top to bottom:
 Checks if the stack is empty.
 Iterates from the top index to 0, printing each element.

Page 6 of 7
10. Main Function

int main() {
// ...
}
Demonstrates the usage of the Stack class:

11. Create Stack Object

Stack stack;
Creates a Stack object.

12. Push Items

stack.push(5);
stack.push(10);
stack.push(20);
stack.push(30);
Adds four items to the stack.

13. Peek at Top Item

cout << "Peek: " << stack.peek() << endl;


Prints the top item (30).
14. Pop Two Items
C++
stack.pop();
stack.pop();
Removes the top two items (30 and 20).

15. Print Remaining Stack

stack.printStack();
Prints the remaining stack (10 and 5).
Example Output:
Peek: 30
Stack (top to bottom):
10
5

Page 7 of 7

You might also like