Tut 3 Stack
Tut 3 Stack
#include <stdio.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
int pop() {
if (top == -1) {
printf("Stack is empty!\n");
return -1;
}
int data = stack[top];
top--;
return data;
}
int main() {
push(1);
push(2);
push(3);
push(4);
push(5);
push(3);
printf("Elements in the stack are: ");
while (top != -1) {
printf("%d ", pop());
}
printf("\n");
return 0;
}
#include<stdio.h>
#define SIZE 5
rear = rear + 1;
queue[rear] = item;
printf("We have enqueued %d\n",item);
}
}
int main() {
//enqueue begins here
enqueue(2);
enqueue(4);
enqueue(6);
enqueue(8);
Example:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 30
int top=-1;
int stack[MAX];
void push(char);
char pop();
int match(char a,char b);
int check(char []);
int main()
{
char exp[MAX];
int valid;
printf("Enter an algebraic expression : ");
gets(exp);
valid=check(exp);
if(valid==1)
printf("Valid expression\n");
else
printf("Invalid expression\n");
return 0;
char pop()
{
if(top==-1)
{
printf("Stack Underflow\n");
exit(1);
}
return(stack[top--]);
}
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
char stack[MAX_SIZE];
int top = -1;
char pop() {
if (top == -1) {
printf("Empty Stack!\n");
return '\0';
}
char data = stack[top];
top--;
return data;
}
void reverse_string(char *str) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
push(str[i]);
}
for (int i = 0; i < len; i++) {
str[i] = pop();
}
}
int main() {
char text[MAX_SIZE];
printf("Input a string: ");
scanf("%s", text);
reverse_string(text);
printf("Reversed string using a stack is: %s\n", text);
return 0;
}
Examples:
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* stack;
int top = -1;
// push function
void push(char ele) {
stack[++top] = ele;
}
// pop function
char pop() {
return stack[top--];
}
// Driver code
int main() {
char str[] = "madam";
if (isPalindrome(str)) {
printf("Yes");
} else {
printf("No");
}
return 0;
}
#include <stdio.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top1 = -1;
int top2 = MAX_SIZE;
int pop1() {
if (top1 == -1) {
printf("Empty Stack!\n");
return -1;
}
int data = stack[top1];
top1--;
return data;
}
int pop2() {
if (top2 == MAX_SIZE) {
printf("Empty Stack!\n");
return -1;
}
int data = stack[top2];
top2++;
return data;
}
int main() {
//Input data in stack-1
push1(10);
push1(30);
push1(40);
push1(50);
//Input data in stack-2
push2(20);
push2(40);
push2(50);
push2(60);
push2(70);
#include <stdio.h>
#include <ctype.h>
int stack[MAXSTACK];
int top = -1;
switch (ch) {
case '*':
val = B * A;
break;
case '/':
val = B / A;
break;
case '+':
val = B + A;
break;
case '-':
val = B - A;
break;
}
int main() {
int i;
if (postfix[i] == ')') {
break;
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Driver code
int main()
{
char infix[MAX_EXPR_SIZE] = "a+b*(c^d-e)^(f+g*h)-i";
// Function call
char* postfix = infixToPostfix(infix);
printf("%s\n", postfix);
free(postfix);
return 0;
}