Dsa Lab 1-5
Dsa Lab 1-5
#include <stdio.h>
LAB PROGRAM 2: STRING PATTERN MATCHING
#include <stdlib.h> OUTPUT: #include <stdio.h>
#include <string.h>
typedef struct { #include <string.h>
char *dayName;
int date; void replacePattern(char *str, char *pat, char *rep) {
char *activity;
} Day; char res[100] = "";
Day* createCalendar() {
Day *calendar = malloc(7 * sizeof(Day));
char *pos = str, *match;
if (!calendar) {
printf("Memory allocation failed!\n");
while ((match = strstr(pos, pat))) {
exit(1); strncat(res, pos, match - pos); OUTPUT:
}
for (int i = 0; i < 7; i++) { strcat(res, rep);
calendar[i].dayName = malloc(20 * sizeof(char));
calendar[i].activity = malloc(100 * sizeof(char)); pos = match + strlen(pat);
if (!calendar[i].dayName || !calendar[i].activity) {
printf("Memory allocation failed!\n"); }
}
exit(1);
strcat(res, pos);
}
return calendar;
printf("Result: %s\n", res);
}
void readCalendar(Day* cal) {
}
for (int i = 0; i < 7; i++) { int main() {
printf("Enter Day Name, Date, Activity: ");
scanf("%s %d ", cal[i].dayName, &cal[i].date); char str[100], pat[20], rep[20];
fgets(cal[i].activity, 100, stdin);
size_t len = strlen(cal[i].activity); printf("Enter the main string: ");
if (len > 0 && cal[i].activity[len - 1] == '\n') {
cal[i].activity[len - 1] = '\0'; fgets(str, sizeof(str), stdin);
}
}
str[strcspn(str, "\n")] = '\0';
}
void displayCalendar(Day* cal) {
printf("Enter the pattern to replace: ");
for (int i = 0; i < 7; i++) { scanf("%s", pat);
printf("%s %d %s\n", cal[i].dayName, cal[i].date, cal[i].activity);
} printf("Enter the replacement string: ");
}
int main() { scanf("%s", rep);
Day *calendar = createCalendar();
readCalendar(calendar); replacePattern(str, pat, rep);
printf("\nCalendar:\n");
displayCalendar(calendar);
return 0;
for (int i = 0; i < 7; i++) {
free(calendar[i].dayName);
}
free(calendar[i].activity);
}
free(calendar);
return 0;
}
LAB PROGRAM 3: STACK OPERATION LAB PROGRAM 4: INFIX TO POSTFIX
#include <stdio.h>
#include <ctype.h> OUTPUT:
#define MAX 50
int stack[MAX], top = -1;
void push(int val) { stack[++top] = val; }
int pop() { return stack[top--]; }
int evalPostfix(char *postfix) {
for (int i = 0; postfix[i]; i++) {
if (isdigit(postfix[i])) push(postfix[i] - '0');
else {
int b = pop(), a = pop();
if (postfix[i] == '/' && b == 0) return printf("Division by zero!\n"), -1;
push(postfix[i] == '+' ? a + b : postfix[i] == '-' ? a - b : postfix[i] == '*' ? a * b : a / b);
}
}
return pop();
}
int main() {
char postfix[MAX];
printf("Enter a postfix expression: ");
scanf("%s", postfix);
int result = evalPostfix(postfix);
if (result != -1) printf("Result: %d\n", result);
return 0;
}