Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
208 changes: 82 additions & 126 deletions InfixPrefixPostfix/infixtoboth.c
Original file line number Diff line number Diff line change
@@ -1,130 +1,86 @@
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

int main()
{
char stack[1000];
char fin[10000];
int final=0;
char A[1000];
int head=-1;
int a,b,c,i,j,k,n,m,count=0;
while((c=getchar())!='\n')
{
A[count]=c;
count++;
}
//printf("%s", A);
for(i=0;i<count;i++)
{
if(A[i]=='(')
{
head++;
stack[head]='(';
}
else if(A[i]==')')
{
while(head!=-1 && stack[head]!='(')
{
fin[final]=stack[head];
final++;
head--;
}
if(head!=-1)
head--;
}
else if(A[i]=='*' || A[i]=='/')
{
while(head!=-1 && stack[head]!='(' && (stack[head]=='*' || stack[head]=='/'))
{
fin[final]=stack[head];
final++;
head--;
}
head++;
stack[head]=A[i];
}
else if(A[i]=='+' || A[i]=='-')
{
while(head!=-1 && stack[head]!='(')
{
fin[final]=stack[head];
final++;
head--;
}
head++;
stack[head]=A[i];
}
else
{
fin[final]=A[i];
final++;
}
}
while(head!=-1)
{
fin[final]=stack[head];
final++;
head--;
}
for(i=0;i<final;i++)
printf("%c", fin[i]);
printf("\n");
final=0;
for(i=count-1;i>=0;i--)
{
if(A[i]==')')
{
head++;
stack[head]=')';
}
else if(A[i]=='(')
{
while(head!=-1 && stack[head]!=')')
{
fin[final]=stack[head];
final++;
head--;
}
if(head!=-1)
head--;
}
else if(A[i]=='*' || A[i]=='/')
{
while(head!=-1 && stack[head]!=')' && (stack[head]=='*' || stack[head]=='/'))
{
fin[final]=stack[head];
final++;
head--;
}
head++;
stack[head]=A[i];
}
else if(A[i]=='+' || A[i]=='-')
{
while(head!=-1 && stack[head]!=')')
{
fin[final]=stack[head];
final++;
head--;
}
head++;
stack[head]=A[i];
}
else
{
fin[final]=A[i];
final++;
}
}
while(head!=-1)
{
fin[final]=stack[head];
final++;
head--;
}
for(i=final-1;i>=0;i--)
printf("%c", fin[i]);
printf("\n");
return 0;
#define MAX_SIZE 1000

char stack[MAX_SIZE];
char fin[MAX_SIZE];
int top = -1; // Stack's top pointer

// Function declarations
void push(char ch);
char pop();
bool isOperator(char ch);
int precedence(char ch);

int main() {
char A[MAX_SIZE];
int count = 0, final = 0, c;

while ((c = getchar()) != '\n') {
A[count++] = c;
}
A[count] = '\0'; // Null terminate the string for good measure

// Postfix conversion
for (int i = 0; i < count; i++) {
if (A[i] == '(') {
push(A[i]);
} else if (A[i] == ')') {
while (top != -1 && stack[top] != '(') {
fin[final++] = pop();
}
pop(); // Remove '(' from stack
} else if (isOperator(A[i])) {
while (top != -1 && precedence(stack[top]) >= precedence(A[i])) {
fin[final++] = pop();
}
push(A[i]);
} else {
fin[final++] = A[i];
}
}

while (top != -1) {
fin[final++] = pop();
}

fin[final] = '\0';
printf("%s\n", fin);

return 0;
}

void push(char ch) {
if (top >= MAX_SIZE - 1) {
printf("Stack overflow!\n");
exit(1);
}
stack[++top] = ch;
}

char pop() {
if (top < 0) {
printf("Stack underflow!\n");
exit(1);
}
return stack[top--];
}

bool isOperator(char ch) {
return ch == '+' || ch == '-' || ch == '*' || ch == '/';
}

int precedence(char ch) {
switch(ch) {
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
default:
return 0;
}
}
18 changes: 14 additions & 4 deletions Sortings/bubblesort.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
#include <stdio.h>
void swap(int *a,int *b){
int t=*a;
*a=*b;
*b=t;
}
int main()
{
int data[100],i,n,step,temp;
Expand All @@ -9,17 +14,22 @@ int main()
printf("%d. Enter element: ",i+1);
scanf("%d",&data[i]);
}

int flag;
for(step=0;step<n-1;++step)
{
flag=0;
for(i=0;i<n-step-1;++i)
{
if(data[i]>data[i+1]) /* To sort in descending order, change > to < in this line. */
{
temp=data[i];
data[i]=data[i+1];
data[i+1]=temp;
swap(&data[i],&data[i+1]);
flag=1;
}
}
if(flag==0){
break;
}
}
printf("In ascending order: ");
for(i=0;i<n;++i)
printf("%d ",data[i]);
Expand Down