Week - 7
Week - 7
#include <stdio.h>
#include <ctype.h>
void push(char x)
{
stack[++top] = x;
}
char pop()
{
if (top == -1)
return '\0';
else
return stack[top--];
}
int getPriority(char x)
{
if (x == '+' || x == '-')
return 1;
if (x == '*' || x == '/' || x == '%')
return 2;
if (x == '^')
return 3;
return 0;
}
if (isalnum(exp[i]))
printf("%c", exp[i]);
else if (exp[i] == '(')
push(exp[i]);
int main()
{
int t;
char expression[MAX];
scanf("%d", &t);
while (t--)
{
scanf("%s", expression);
infixToPostfix(expression);
printf("\n");
}
return 0;
}
In-Lab – 2(page No: 144)
#include <stdio.h>
#include <ctype.h>
void push(char x)
{
stack[++top] = x;
}
char pop()
{
if (top == -1)
return '\0';
else
return stack[top--];
}
int getPriority(char x)
{
if (x == '+' || x == '-')
return 1;
if (x == '*' || x == '/' || x == '%')
return 2;
if (x == '^')
return 3;
return 0;
}
void infixToPostfix(char exp[])
{
int i = 0;
char x;
if (isalnum(exp[i]))
printf("%c", exp[i]);
void push(char x)
{
stack[++top] = x;
}
void pop()
{
top--;
}
int isValidParenthesis(char expr[])
{
int i;
top = -1;
for (i = 0; expr[i] != '\0'; i++)
{
if (expr[i] == '(')
{
push(expr[i]);
}
else if (expr[i] == ')')
{
if (top == -1)
return 0;
pop();
}
}
return top == -1;
}
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
char expr[100005];
scanf("%s", expr);
if (isValidParenthesis(expr))
printf("1\n");
else
printf("0\n");
}
return 0;
}
Post-Lab – 1(page No: 148)
int stack[100000];
int top = -1;
void push(int x)
{
stack[++top] = x;
}
int pop()
{
return stack[top--];
}
int calculate(char* s)
{
int result = 0;
int num = 0;
int sign = 1;
top = -1;
for (int i = 0; s[i] != '\0'; i++)
{
if (isdigit(s[i]))
{
num = num * 10 + (s[i] - '0');
}
else if (s[i] == '+')
{
result += sign * num;
num = 0;
sign = 1;
}
else if (s[i] == '-')
{
result += sign * num;
num = 0;
sign = -1;
}
else if (s[i] == '(')
{
push(result);
push(sign);
result = 0;
sign = 1;
}
else if (s[i] == ')')
{
result += sign * num;
num = 0;
result *= pop();
result += pop();
}
}
result += sign * num;
return result;
}
int stack[100000];
int top = -1;
void push(int x)
{
stack[++top] = x;
}
int pop()
{
return stack[top--];
}
int calculate(char* s)
{
int num = 0;
char operator = '+';
top = -1;
int stack[50001];
int top=-1;
void operation(char op)
{
if (top==-1) return;
int a=stack[top--];
if (top==-1) return;
int b=stack[top--];
int res;
switch(op)
{
case '+': res=b+a; break;
case '-': res=b-a; break;
case '*': res=b*a; break;
case '/': res=b/a; break;
}
stack[++top]=res;
}
int evalRPN(char** tokens, int tokensSize)
{
for(int i=0; i<tokensSize; i++)
{
char* s=tokens[i];
if (strlen(s)>1 || isdigit(s[0]))
{
int x=atoi(s);
stack[++top]=x;
}
else operation(s[0]);
}
if (top==-1)
return 0;
return stack[top];
}
#include <stdio.h>
#include <string.h>
char stack[10002];
int top = -1;
void push(char x)
{
stack[++top] = x;
}
void pop()
{
top--;
}
if (isBalanced(expr))
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
int minInsertions(char* s)
{
int open = 0, insertions = 0;
int n = strlen(s);
for (int i = 0; i < n; i++)
{
if (s[i] == '(')
{
open++;
}
else
{
if (i + 1 < n && s[i + 1] == ')')
{
i++;
}
else
{
insertions++;
}
if (open > 0)
{
open--;
}
else
{
insertions++;
}
}
}
insertions += open * 2;
return insertions;
}
#include<stdio.h>
#include <ctype.h>
int stack[100002];
int top = -1;
void push(int x)
{
stack[++top] = x;
}
int pop()
{
if (top == -1)
return -1;
else
return stack[top--];
}
void postfix(char exp[])
{
int i=0;
int A,B,res,num;
while(exp[i] != '\0')
{
if(isdigit(exp[i]))
{
num = exp[i] - '0';
push(num);
}
else
{
A = pop();
B = pop();
switch(exp[i])
{
case '+': res = B + A;
break;
case '-': res = B - A;
break;
case '*': res = B * A;
break;
case '/':
if(A==0)
{
printf("Error: Division by zero\n");
return;
}
res = B / A;
break;
case '%': if(A==0)
{
printf("Error: Division by zero\n");
return;
}
res = B / A;
break;
case '^': res=(int)pow(B,A);
break;
default:
printf("Error: Unknown operator %c\n", exp[i]);
return;
}
push(res);
}
i++;
}
printf("%d\n",pop());
}
int main()
{
int n;
scanf("%d",&n);
char exp[n];
scanf("%s",exp);
postfix(exp);
return 0;
}
https://leetcode.com/problems/reverse-prefix-of-word/