dsa

Download as pdf or txt
Download as pdf or txt
You are on page 1of 19

1

#include <stdio.h>

#include <stdlib.h>

struct Day {

char *dayName;

int date;

char *activity;

};

void create(struct Day *day) {

day->dayName = (char *)malloc(sizeof(char) * 20);

day->activity = (char *)malloc(sizeof(char) * 100);

printf("Enter the day name: ");

scanf("%s", day->dayName);

printf("Enter the date: ");

scanf("%d", &day->date);

printf("Enter the activity for the day: ");

scanf(" %[^\n]s", day->activity);

void read(struct Day *calendar, int size) {

for (int i = 0; i < size; i++) {

printf("Enter details for Day %d:\n", i + 1);

create(&calendar[i]);

}
void display(struct Day *calendar, int size) {

printf("\nWeek's Activity Details:\n");

for (int i = 0; i < size; i++) {

printf("Day %d:\n", i + 1);

printf("Day Name: %s\n", calendar[i].dayName);

printf("Date: %d\n", calendar[i].date);

printf("Activity: %s\n", calendar[i].activity);

printf("\n");

void freeMemory(struct Day *calendar, int size) {

for (int i = 0; i < size; i++) {

free(calendar[i].dayName);

free(calendar[i].activity);

int main() {

int size;

printf("Enter the number of days in the week: ");

scanf("%d", &size);

struct Day *calendar = (struct Day *)malloc(sizeof(struct Day) * size);

if (calendar == NULL) {

printf("Memory allocation failed. Exiting program.\n");

return 1;

read(calendar, size);
display(calendar, size);

freeMemory(calendar, size);

free(calendar);

return 0;

#include<stdio.h>

#include<string.h> // For strcspn

char str[50], pat[20], rep[20], res[50];

int c = 0, m = 0, i = 0, j = 0, k, flag = 0;

void stringmatch()

while (str[c] != '\0')

if (str[m] == pat[i])

i++;

m++;

if (pat[i] == '\0') // Pattern matched

flag = 1;

for (k = 0; rep[k] != '\0'; k++, j++)

res[j] = rep[k]; // Add replacement string to result

i = 0;

c = m; // Move forward in the main string


}

else

res[j] = str[c]; // Copy unmatched character

j++;

c++;

m = c;

i = 0;

res[j] = '\0'; // Null-terminate the result string

void main()

printf("Enter the main string: ");

fgets(str, sizeof(str), stdin);

str[strcspn(str, "\n")] = '\0'; // Remove trailing newline character

printf("\nEnter the pattern string: ");

fgets(pat, sizeof(pat), stdin);

pat[strcspn(pat, "\n")] = '\0'; // Remove trailing newline character

printf("\nEnter the replace string: ");

fgets(rep, sizeof(rep), stdin);

rep[strcspn(rep, "\n")] = '\0'; // Remove trailing newline character

printf("\nThe string before pattern match is:\n%s", str);

stringmatch();

if (flag == 1)
printf("\nThe string after pattern match and replace is:\n%s", res);

else

printf("\nPattern string is not found");

#include<stdio.h>

#include<stdlib.h>

#define MAX 3

int s[MAX];

int top = -1;

void push(int item);

int pop();

void palindrome();

void display();

void main()

int choice, item;

while (1)

printf("\n\n\n\n-----------Menu----------- : ");

printf("\n=>1.Push an Element to Stack and Overflow demo ");

printf("\n=>2.Pop an Element from Stack and Underflow demo");

printf("\n=>3.Palindrome demo ");

printf("\n=>4.Display ");

printf("\n=>5.Exit");

printf("\nEnter your choice: ");


scanf("%d", & choice);

switch (choice)

case 1:

printf("\nEnter an element to be pushed: ");

scanf("%d", & item);

push(item);

break;

case 2:

item = pop();

if (item != -1)

printf("\nElement popped is: %d", item);

break;

case 3:

palindrome();

break;

case 4:

display();

break;

case 5:

exit(1);

default:

printf("\nPlease enter valid choice ");

break;

void push(int item)

if (top == MAX - 1)
{

printf("\n-----------Stack overflow-----------");

return;

top = top + 1;

s[top] = item;

int pop()

int item;

if (top == -1)

printf("\n-----------Stack underflow-----------");

return -1;

item = s[top];

top = top - 1;

return item;

void display()

int i;

if (top == -1)

printf("\n-----------Stack is empty-----------");

return;

printf("\nStack elements are:\n ");


for (i = top; i >= 0; i--)

printf("| %d |\n", s[i]);

void palindrome()

int flag = 1, i;

printf("\nStack content are:\n");

for (i = top; i >= 0; i--)

printf("| %d |\n", s[i]);

printf("\nReverse of stack content are:\n");

for (i = 0; i <= top; i++)

printf("| %d |\n", s[i]);

for (i = 0; i <= top / 2; i++)

if (s[i] != s[top - i])

flag = 0;

break;

if (flag == 1)

printf("\nIt is palindrome number");

else

printf("\nIt is not a palindrome number");

}
}

#include<stdio.h>

#include<stdlib.h>

void evaluate();

void push(char);

char pop();

int prec(char);

char infix[30], postfix[30], stack[30];

int top = -1;

void main()

printf("\n Enter the valid infix expression:");

scanf("%s", infix);

evaluate();

printf("\nThe entered infix expression is :\n %s \n", infix);

printf("\nThe corresponding postfix expression is :\n %s \n", postfix);

void evaluate()

int i = 0, j = 0;

char symb, temp;

push('#');

for (i = 0; infix[i] != '\0'; i++)


{

symb = infix[i];

switch (symb)

case '(':

push(symb);

break;

case ')':

temp = pop();

while (temp != '(')

postfix[j] = temp;

j++;

temp = pop();

break;

case '+':

case '-':

case '*':

case '/':

case '%':

case '^':

case '$':

while (prec(stack[top]) >= prec(symb))

temp = pop();

postfix[j] = temp;

j++;

push(symb);
break;

default:

postfix[j] = symb;

j++;

while (top > 0)

temp = pop();

postfix[j] = temp;

j++;

postfix[j] = '\0';

void push(char item)

top = top + 1;

stack[top] = item;

char pop()

char item;

item = stack[top];

top = top - 1;

return item;

int prec(char symb)

{
int p;

switch (symb)

case '#':

p = -1;

break;

case '(':

case ')':

p = 0;

break;

case '+':

case '-':

p = 1;

break;

case '*':

case '/':

case '%':

p = 2;

break;

case '^':

case '$':

p = 3;

break;

return p;

}
5a

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int i, top = -1;

int op1, op2, res, s[20];

char postfix[90], symb;

void push(int item)

top = top + 1;

s[top] = item;

int pop()

int item;

item = s[top];

top = top - 1;

return item;

void main()

printf("\nEnter a valid postfix expression:\n");

scanf("%s", postfix);
for (i = 0; postfix[i] != '\0'; i++)

symb = postfix[i];

if (isdigit(symb))

push(symb - '0');

else

op2 = pop();

op1 = pop();

switch (symb)

case '+':

push(op1 + op2);

break;

case '-':

push(op1 - op2);

break;

case '*':

push(op1 * op2);

break;

case '/':

push(op1 / op2);

break;

case '%':

push(op1 % op2);

break;

case '$':

case '^':

push(pow(op1, op2));
break;

default:

push(0);

res = pop();

printf("\n Result = %d", res);

5b

#include <stdio.h>

void tower(int n, int source, int temp, int destination)

if (n == 0)

return;

tower(n - 1, source, destination, temp);

printf("\nMove disc %d from %c to %c", n, source, destination);

tower(n - 1, temp, source, destination);

void main()

int n;

printf("\nEnter the number of discs: \n");

scanf("%d", & n);

tower(n, 'A', 'B', 'C');

printf("\n\nTotal Number of moves are: %d", (int) pow(2, n) - 1);

#include<stdio.h>

#include<stdlib.h>
#define MAX 5

char circular_queue[MAX];

int front = -1, rear = -1;

int isEmpty()

if (front == -1 && rear == -1)

return 1;

else

return 0;

int isFull()

if ((rear + 1) % MAX == front)

return 1;

else

return 0;

void insertElement(char element)

if (isFull())

printf("Circular Queue Overflow\n");

return;

else if (isEmpty())

{
front = rear = 0;

else

rear = (rear + 1) % MAX;

circular_queue[rear] = element;

void deleteElement()

if (isEmpty())

printf("Circular Queue Underflow\n");

return;

else if (front == rear)

front = rear = -1;

else

front = (front + 1) % MAX;

void display()

int i;

if (isEmpty())

{
printf("Circular Queue is empty\n");

return;

printf("Circular Queue elements: ");

i = front;

do

printf("%c ", circular_queue[i]);

i = (i + 1) % MAX;

while (i != (rear + 1) % MAX);

printf("\n");

int main()

int choice;

char element;

do

printf("\n\n---- Circular Queue Menu ----\n");

printf("1. Insert an Element\n");

printf("2. Delete an Element\n");

printf("3. Display Circular Queue\n");

printf("4. Exit\n");

printf("Enter your choice: ");

scanf("%d", &choice);

switch(choice)

case 1:
printf("Enter element to be inserted: ");

scanf(" %c", &element);

insertElement(element);

break;

case 2:

deleteElement();

break;

case 3:

display();

break;

case 4:

printf("Exiting...\n");

break;

default:

printf("Invalid choice! Please enter a valid option.\n");

while(choice != 4);

return 0;

You might also like