0% found this document useful (0 votes)
18 views112 pages

Ilovepdf Merged

Uploaded by

rishikesh9098
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views112 pages

Ilovepdf Merged

Uploaded by

rishikesh9098
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 112

PROGRAM -1

1. Develop a Program in C for the following:

a) Declare a calendar as an array of 7 elements (A dynamically Created


array) to represent 7 days of a week. Each Element of the array is a structure
having three fields. The first field is the name of the Day (A dynamically
allocated String), The second field is the date of the Day (A integer), the third
field is the description of the activity for a particular day (A dynamically
allocated String).

a) Program code:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

// Structure definition for each day

struct Day {

char *name; // dynamically allocated string for day

name int date;// date of the day

char *activity; // dynamically allocated string for activity description

};

int main() {

int i;

struct Day *calendar[7];

// Initialize each element of the calendar array

for (i = 0; i < 7; i++) {

calendar[i] = (struct Day *)malloc(sizeof(struct Day));

1
PROGRAM -1

// Assume the day names and activities for demonstration purposes

switch (i) {

case 0:

calendar[i]->name = strdup("Monday");

calendar[i]->date = 1;

calendar[i]->activity = strdup("Work");

break;

case 1:

calendar[i]->name = strdup("Tuesday");

calendar[i]->date = 2;

calendar[i]->activity = strdup("Meeting");

break;

case 2:

calendar[i]->name = strdup("Wednesday");

calendar[i]->date = 3;

calendar[i]->activity = strdup("Gym");

break;

case 3:

calendar[i]->name = strdup("Thursday");

calendar[i]->date = 4;

calendar[i]->activity = strdup("Study");

break;

case 4:

2
PROGRAM -1

calendar[i]->name = strdup("Friday");

calendar[i]->date = 5;

calendar[i]->activity = strdup("Movie night");

break;

case 5:

calendar[i]->name = strdup("Saturday");

calendar[i]->date = 6;

calendar[i]->activity = strdup("Family outing");

break;

case 6:

calendar[i]->name = strdup("Sunday");

calendar[i]->date = 7;

calendar[i]->activity = strdup("Relax");

break;

// Display the calendar

printf("Calendar:\n");

for (i = 0; i < 7; i++) {

printf("%s (Date: %d): %s\n", calendar[i]->name, calendar[i]->date,


calendar[i]->activity);

// Free allocated memory

3
PROGRAM -1

for (i = 0; i < 7; i++) {

free(calendar[i]->name);

free(calendar[i]->activity);

free(calendar[i]);

return 0;

Expected Output:

Calendar:

Monday (Date: 1): Work

Tuesday (Date: 2): Meeting

Wednesday (Date: 3): Gym

Thursday (Date: 4): Study

Friday (Date: 5): Movie night

Saturday (Date: 6): Family outing

Sunday (Date: 7): Relax

4
PROGRAM -1

b) Write functions create(), read() and display(); to create the calendar, to


read the data from the keyboard and to print weeks activity details report on
screen.

Program Code:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

// Structure definition for each day

struct Day {

char *name; // dynamically allocated string for day

name int date;// date of the day

char *activity; // dynamically allocated string for activity description

};

// Function to create the calendar

void create(struct Day *calendar[]) {

int i;

for (i = 0; i < 7; i++) {

calendar[i] = (struct Day *)malloc(sizeof(struct

Day)); calendar[i]->name = NULL;

calendar[i]->activity = NULL;

5
PROGRAM -1

// Function to read data from the

keyboard void read(struct Day

*calendar[]) {

int i;

char temp[100];

for (i = 0; i < 7; i++) {

printf("Enter the name of the day: ");

scanf("%s", temp);

calendar[i]->name = strdup(temp);

printf("Enter the date of the day: ");

scanf("%d", &calendar[i]->date);

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

scanf("%s", temp);

calendar[i]->activity = strdup(temp);

// Function to display the calendar

void display(struct Day *calendar[]) {

int i;

printf("Calendar:\n");

for (i = 0; i < 7; i++) {

printf("%s (Date: %d): %s\n", calendar[i]->name, calendar[i]->date,


calendar[i]->activity);
6
PROGRAM -1

int main() {

struct Day *calendar[7];

// Create the calendar

create(calendar);

// Read data from the keyboard

read(calendar);

// Display the calendar

display(calendar);

// Free allocated memory

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

free(calendar[i]->name);

free(calendar[i]->activity);

free(calendar[i]);

return 0;

7
PROGRAM -1

Expected Output:

Enter the name of the day: Monday

Enter the date of the day: 1

Enter the activity for the day: Work

Enter the name of the day: Tuesday

Enter the date of the day: 2

Enter the activity for the day: Meeting

Enter the name of the day: Wednesday

Enter the date of the day: 3

Enter the activity for the day: Gym

Enter the name of the day: Thursday

Enter the date of the day: 4

Enter the activity for the day: Study

Enter the name of the day: Friday

Enter the date of the day: 5

Enter the activity for the day: Movie

Enter the name of the day: Saturday

Enter the date of the day: 6

Enter the activity for the day: Outing

Enter the name of the day: Sunday

Enter the date of the day: 7

Enter the activity for the day: Relax

8
PROGRAM -1

Calendar:

Monday (Date: 1): Work

Tuesday (Date: 2): Meeting

Wednesday (Date: 3): Gym

Thursday (Date: 4): Study

Friday (Date: 5): Movie

Saturday (Date: 6): Outing

Sunday (Date: 7): Relax

9
PROGRAM-

2. Develop a Program in C for the following operations on Strings.


a. Read a Main String(STR), a Pattern String(PAT) and a Replace String(REP)
b. Perform Pattern Matching Operation: Find and Replace all Occurrences of
PAT in STR with REP if PAT exists in STR. Report suitable messages in case
PAT does not exist in STR
Support the program with functions for each of the above operations. Don’t use
Built-in functions.
Program Code:
#include <stdio.h>
#include <string.h>
char STR[100], PAT[100], REP[100], ANS[100];
int i, j, c, m, k, flag = 0;
void read()
{
printf("\nEnter MAIN string:\n");
fgets(STR, sizeof(STR), stdin);
printf("\nEnter PATTERN string:\n");
fgets(PAT, sizeof(PAT), stdin);
printf("\nEnter REPLACE string:\n");
fgets(REP, sizeof(REP), stdin);
}
void replace()
{
i = m = c = j = 0;
while (STR[c] != '\0')
{
if (STR[m] == PAT[i])

1
PROGRAM-
{
i++;
m++;
if (PAT[i] == '\0')
{
for (k = 0; REP[k] != '\0'; k++, j++)
{
ANS[j] = REP[k];
}
i = 0;
c = m;
flag = 1;
}
}
else
{
ANS[j] = STR[c];
j++;
c++;
m = c;
i = 0;
}
}
if (flag == 0)
printf("Pattern not found!!!\n");
else
{

2
PROGRAM-
ANS[j] = '\0';
printf("\nThe RESULTANT string is:\n%s\n", ANS);
}
}
int main()
{
read();
replace();
return 0;
}

Sample Output 1
Enter the MAIN string:
good morning
Enter a PATTERN string: morning
Enter a REPLACE string: Evening
The RESULTANT string is: good evening

Sample Output 2
Enter the MAIN string: hi vcet
Enter a PATTERN string: bye
Enter a REPLACE string: hello
Pattern doesn't found!!

3
Program
3. Develop a menu driven Program in C for the following operations on STACK
of Integers
(Array Implementation of Stack with maximum size MAX)
a. Push an Element on to Stack
b. Pop an Element from Stack
c. Demonstrate how Stack can be used to check Palindrome
d. Demonstrate Overflow and Underflow situations on Stack
e. Display the status of Stack
f. Exit
Support the program with appropriate functions for each of the above operations

Program :-

#include<stdio.h>
#include<stdlib.h>
#define MAX 5

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)
{

1
Program
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;

2
Program
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");
}

3
Program
}

Output:

~~~~~~Menu~~~~~~ :
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 1
Enter an element to be pushed: 11

~~~~~~Menu~~~~~~ :
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 1
Enter an element to be pushed: 12

~~~~~~Menu~~~~~~ :
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 1
Enter an element to be pushed: 13

~~~~~~Menu~~~~~~ :
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 1
Enter an element to be pushed: 14

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow

4
Program
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 1
Enter an element to be pushed: 15

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 1
Enter an element to be pushed: 16
~~~~Stack overflow~~~~

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 4

Stack elements are:


| 15 |
| 14 |
| 13 |
| 12 |
| 11 |

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 2
Element popped is: 15

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow

5
Program
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 4
Stack elements are:
| 14 |
| 13 |
| 12 |
| 11 |
~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 2
Element popped is: 14

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 2
Element popped is: 13

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 2
Element popped is: 12

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Displ
ay

6
Program
Enter your choice: 2
Element popped is: 11

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 2
~~~~Stack underflow~~~~

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 4
~~~~Stack is empty~~~~

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 1
Enter an element to be pushed: 11

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 1
Enter an element to be pushed: 22

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo

7
Program
=>4.Display
=>5.Exit
Enter your choice: 1
Enter an element to be pushed: 11

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 3
Stack content are:
| 11 |
| 22 |
| 11 |

Reverse of stack content are:


| 11 |
| 22 |
| 11 |

It is palindrome number

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 2
Element popped is: 11

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 2
Element popped is: 22

~~~~~~Menu~~~~~

8
Program
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 2
Element popped is: 11

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 1
Enter an element to be pushed: 11

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 1
Enter an element to be pushed: 22

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 1
Enter an element to be pushed: 33

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 3
Stack content are:

9
Program
| 33 |
| 22 |
| 11 |

Reverse of stack content are:


| 11 |
| 22 |
| 33 |

It is not a palindrome number

~~~~~~Menu~~~~~
=>1.Push an Element to Stack and Overflow demo
=>2.Pop an Element from Stack and Underflow demo
=>3.Palindrome demo
=>4.Display
=>5.Exit
Enter your choice: 5

1
Program
Develop a Program in C for converting an Infix Expression to Postfix
Expression. Program should support for both parenthesized and free
parenthesized expressions with the operators: +, -, *, /, % (Remainder), ^
(Power) and alphanumeric operands.

Algorithm:

Step 1: Start.

Step 2: Read an infix expression with parenthesis and without parenthesis.

Step 3: convert the infix expression to postfix expression.

Step 4: Stop

Program:-

#define SIZE 50 /* Size of Stack */

#include <ctype.h>

#include <stdio.h>

char s[SIZE];

int top = -1; /* Global declarations */

push(char elem) /* Function for PUSH operation */

s[++top] = elem;

char pop() /* Function for POP operation */

return (s[top--]);

1
Program
int pr(char elem) /* Function for precedence */

switch (elem)

case '#':

return 0;

case '(':

return 1;

case '+':

case '-':

return 2;

case '*':

case '/':

case '%':

return 3;

case '^':

return 4;

void main() /* Main Program */

char infx[50], pofx[50], ch, elem;

int i = 0, k = 0;

printf("\n\nEnter the Infix Expression ");

2
Program
scanf("%s", infx);

push('#');

while ((ch = infx[i++]) != '\0')

if (ch == '(')

push(ch);

else if (isalnum(ch))

pofx[k++] = ch;

else if (ch == ')')

while (s[top] != '(')

pofx[k++] = pop();

elem = pop(); /* Remove ( */

else /* Operator */

while (pr(s[top]) >= pr(ch))

pofx[k++] = pop();

push(ch);

while (s[top] != '#') /* Pop from stack till empty */

pofx[k++] = pop();

pofx[k] = '\0'; /* Make pofx as valid string */

3
Program
printf("\n\nGiven Infix Expn: %s Postfix Expn: %s\n", infx, pofx);

Output 1:

Enter the Infix Expression: (a+b)*c/d^5%1

Given Infix Expn: (a+b)*c/d^5%1

Postfix Expn: ab+c*d5^/1%

Output 2:

Enter the valid infix expression: (a+b)+c/d*e

The entered infix expression is : (a+b)+c/d*e

The corresponding postfix expression is : ab+cd/e*+

4
Program -
5. Develop a Program in C for the following Stack Applications

5a. Evaluation of Suffix expression with single digit operands and


operators: +, -, *, /, %, ^

Algorithm:
Step 1: Start.
Step 2: Read the postfix/suffix expression.
Step 3: Evaluate the postfix expression based on the precedence of the operator.
Step 4: Stop.

Program code:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>

double compute(char symbol, double op1, double op2)


{
switch(symbol)
{
case '+' : return op1+op2;
case '-' : return op1-op2;
case '*' : return op1*op2;
case '/' : return op1/op2;
case '$' :
case '^' :return pow(op1,op2);
default : return 0;
}
}

int main()
{
double s[20],res,op1,op2;
int top=-1,i;
char postfix[20],symbol;
printf("Enter the postfix expression : \n");

1
Program -
gets(postfix);
for(i=0;i<strlen(postfix); i++)
{
symbol=postfix[i];
if(isdigit(symbol))
{
s[++top]=symbol-'0';
}
else
{
op2=s[top--];
op1=s[top--];
res= compute(symbol,op1,op2);
s[++top]=res;
}
}
res=s[top--];
printf("\n The result is : %f\n",res);
return 0;
}

Output 1:
Insert a postfix notation: 22^32*+
Result: 10

Output 2:
Insert a postfix notation: 45^98*+
Result: 1096

Output 3:
Insert a postfix notation: 23+
Result: 5

Output 4:
Insert a postfix notation: 13-
Result:

2
Program -
5b. Solving Tower of Hanoi problem with n disks.

Algorithm:
Step 1: Start.
Step 2: Read N number of discs.
Step 3: Move all the discs from source to destination by using temp rod.
Step 4: Stop.

Program code:
#include<stdio.h>
#include<math.h>

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


{
if(n==0)
return;
tower(n-1, source, destination, temp);
printf("\n Move disc %d from %c to %c \n", n, source, destination);
tower(n-1, temp, source, destination);
}

int main()
{
int n;
printf("Enter the number of discs : \n ");
scanf("%d",&n);
tower(n,'A','B','C');
printf("Total number of disc moves are %d ", (int)pow(2,n)-1);
return 0;
}

Output 1:
Enter the number of disks: 2
Move disk 1 from peg A to peg B
Move disk 2 from peg A to peg C
Move disk 1 from peg B to peg C
Total numbers of disc moves are 3

3
Program -
Output 2:
Enter the number of disks: 3
Move disk 1 from peg A to peg C
Move disk 2 from peg A to peg B
Move disk 1 from peg C to peg B
Move disk 3 from peg A to peg C
Move disk 1 from peg B to peg A
Move disk 2 from peg B to peg C
Move disk 1 from peg A to peg C
Total numbers of disc moves are 7

Output 3:
Enter the number of disks: 4
Move disk 1 from peg A to peg B
Move disk 2 from peg A to peg C
Move disk 1 from peg B to peg C
Move disk 3 from peg A to peg B
Move disk 1 from peg C to peg A
Move disk 2 from peg C to peg B
Move disk 1 from peg A to peg B
Move disk 4 from peg A to peg C
Move disk 1 from peg B to peg C
Move disk 2 from peg B to peg A
Move disk 1 from peg C to peg A
Move disk 3 from peg B to peg C
Move disk 1 from peg A to peg B
Move disk 2 from peg A to peg C
Move disk 1 from peg B to peg C
Total numbers of disc moves are 15

4
Program

6. Develop a menu driven Program in C for the following operations on Circular


QUEUE of Characters (Array Implementation of Queue with maximum size
MAX)

a. Insert an Element on to Circular QUEUE

b. Delete an Element from Circular QUEUE

c. Demonstrate Overflow and Underflow situations on Circular QUEUE

d. Display the status of Circular QUEUE

e. Exit

Support the program with appropriate functions for each of the above operations

Algorithm:-

Step 1: Start.

Step 2: Initialize queue size to MAX.

Step 3: Insert the elements into circular queue. If queue is full give a message as
“queue is overflow”

Step 4: Delete an element from the circular queue. If queue is empty give a
message as “queue is underflow”

Step 5: Display the contents of the queue.

Step 6: Stop.

Program:-

#include <stdio.h>

#include<stdlib.h>

#include<stdio_ext.h>

#define MAX 3

1
Program

char cq[MAX];

int front = -1, rear = -1;

void insert(char);

void delete();

void display();

void main()

int ch;

char item;

while(1)

printf("\n\n~~Main Menu~~");

printf("\n==> 1. Insertion and Overflow Demo");

printf("\n==> 2. Deletion and Underflow Demo");

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

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

nEnter Your Choice: ");

scanf("%d", &ch);

fpurge(stdin);

switch(ch)

case 1: printf("\n\nEnter the element to be inserted: ");

2
Program
scanf("%c", &item);

insert(item);

break;

case 2: delete();

break;

case 3: display();

break;

case 4: exit(0);

default: printf("\n\nPlease enter a valid choice");

void insert(char item)

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

printf("\n\n~~Circular Queue Overflow~~");

else

if(front == -1)

front = rear = 0;

else

3
Program
rear = (rear+1)%MAX;

cq[rear] = item;

void delete()

char item;

if(front == -1)

printf("\n\n~~Circular Queue Underflow~~");

else

item = cq[front];

printf("\n\nDeleted element from the queue is: %c ",item );

if(front == rear) //only one element

front = rear = -1;

else

front = (front+1)%MAX;
}

4
Program

void display ()

int i ;

if(front == -1)

printf("\n\nCircular Queue Empty");

else

printf("\nCircular Queue contents are:\n");

printf("Front[%d]-> ", front);

for(i = front; i != rear ; i = (i+1)%MAX)

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

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

printf(" <-[%d]Rear", rear);

5
Program

Output:

~~Main Menu~~

==> 1. Insertion and Overflow Demo

==> 2. Deletion and Underflow Demo

==> 3. Display

==> 4. Exit

Enter Your Choice: 1

Enter the element to be inserted: A

~~Main Menu~~

==> 1. Insertion and Overflow Demo

==> 2. Deletion and Underflow Demo

==> 3. Display

==> 4. Exit

Enter Your Choice: 1

Enter the element to be inserted: B

~~Main Menu~~

==> 1. Insertion and Overflow Demo

==> 2. Deletion and Underflow Demo

==> 3. Display

==> 4. Exit

Enter Your Choice: 1

Enter the element to be inserted: C

~~Main Menu~~

6
Program
==> 1. Insertion and Overflow Demo

==> 2. Deletion and Underflow Demo

==> 3. Display

==> 4. Exit

Enter Your Choice: 1

Enter the element to be inserted: D

~~Circular Queue Overflow~~

~~Main Menu~~

==> 1. Insertion and Overflow Demo

==> 2. Deletion and Underflow Demo

==> 3. Display

==> 4. Exit

Enter Your Choice: 3

Circular Queue contents are:

Front[0]-> A B C <-[2]Rear

~~Main Menu~~

==> 1. Insertion and Overflow Demo

==> 2. Deletion and Underflow Demo

==> 3. Display

==> 4. Exit

Enter Your Choice: 2

Deleted element from the queue is: A

7
Program

~~Main Menu~~

==> 1. Insertion and Overflow Demo

==> 2. Deletion and Underflow Demo

==> 3. Display

==> 4. Exit

Enter Your Choice: 3

Circular Queue contents are:

Front[1]-> B C <-[2]Rear

~~Main Menu~~

==> 1. Insertion and Overflow Demo

==> 2. Deletion and Underflow Demo

==> 3. Display

==> 4. Exit

Enter Your Choice: 2

Deleted element from the queue is: B

~~Main Menu~~

==> 1. Insertion and Overflow Demo

==> 2. Deletion and Underflow Demo

==> 3. Display

==> 4. Exit

Enter Your Choice: 3

8
Program
Circular Queue contents are:

Front[2]-> C <-[2]Rear

~~Main Menu~~

==> 1. Insertion and Overflow Demo

==> 2. Deletion and Underflow Demo

==> 3. Display

==> 4. Exit

Enter Your Choice: 2

Deleted element from the queue is: C

~~Main Menu~~

==> 1. Insertion and Overflow Demo

==> 2. Deletion and Underflow Demo

==> 3. Display

==> 4. Exit

Enter Your Choice:

Circular Queue underflow or Empty

~~Main Menu~~

==> 1. Insertion and Overflow Demo

==> 2. Deletion and Underflow Demo

==> 3. Display

==> 4. Exit

9
Program
Enter Your Choice: 4

1
Program
7. Develop a menu driven Program in C for the following operations on Singly
Linked List (SLL) of Student Data with the fields: USN, Name, Programme,
Sem, Ph.No

a. Create a SLL of N Students Data by using front insertion.

b. Display the status of SLL and count the number of nodes in it

c. Perform Insertion / Deletion at End of SLL

d. Perform Insertion / Deletion at Front of SLL (Demonstration of stack)

e. Exit

Algorithm:-
Step 1: Start.

Step 2: Read the value of N. (N student‟s information)

Step 3: Create a singly linked list. (SLL)

Step 4: Display the status of SLL.

Step 5: Count the number of nodes.

Step 6: Perform insertion at front of list.

Step 7: Perform deletion at the front of the list.

Step 8: Perform insertion at end of the list.

Step 9: Perform deletion at the end of the list.

Step 10: Demonstrate how singly linked list can be used as stack.

Step 11: Demonstrate how singly linked list can be used as queue.

Step 12: Stop.

1
Program
Program:-
#include<stdio.h>
#include<stdlib.h>
struct node

char usn[25],name[25],branch[25];

int sem;

long int phone;

struct node *link;

};

typedef struct node * NODE;

NODE start = NULL;

int count=0;

NODE create()

NODE snode;

snode = (NODE)malloc(sizeof(struct node));

if(snode == NULL)

printf("\nMemory is not available");

exit(1);

printf("\nEnter the usn,Name,Branch, sem,PhoneNo of the student:");

scanf("%s %s %s %d %ld",snode->usn, snode->name, snode->branch,


&snode->sem, &snode->phone);

2
Program
snode->link=NULL;

count++;

return snode;

NODE insertfront()

NODE temp;

temp = create();

if(start == NULL)

return temp;

temp->link = start;

return temp;

NODE deletefront()

NODE temp;

if(start == NULL)

printf("\nLinked list is empty");

return NULL;

if(start->link == NULL)

3
Program
{

printf("\nThe Student node with usn:%s is deleted ",start->usn);

count--;

free(start);

return NULL;

temp = start;

start = start->link;

printf("\nThe Student node with usn:%s is deleted",temp->usn);

count--;

free(temp);

return start;

NODE insertend()

NODE cur,temp;

temp = create();

if(start == NULL)

return temp;

cur = start;

while(cur->link !=NULL)

4
Program
cur = cur->link;

cur->link = temp;

return start;

NODE deleteend()

NODE cur,prev;

if(start == NULL)

printf("\nLinked List is empty");

return NULL;

if(start->link == NULL)

printf("\nThe student node with the usn:%s is deleted",start->usn);

free(start);

count--;

return NULL;

prev = NULL;

cur = start;

while(cur->link!=NULL)

5
Program
prev = cur;

cur = cur->link;

printf("\nThe student node with the usn:%s is deleted",cur->usn);

free(cur);

prev->link = NULL;

count--;

return start;

void display()

NODE cur;

int num=1;

if(start == NULL)

printf("\nNo Contents to display in SLL \n");

return;

printf("\nThe contents of SLL: \n");

cur = start;

while(cur!=NULL)

printf("\n||%d|| USN:%s| Name:%s| Branch:%s| Sem:%d|


Ph:%ld|",num,cur->usn, cur->name,cur->branch, cur->sem,cur->phone);

cur = cur->link;

6
Program
num++;

printf("\n No of student nodes is %d \n",count);

void stackdemo()

int ch;

while(1)

printf("\n~~~Stack Demo using SLL~~~\n");

printf("\n1:Push operation \n2: Pop operation \n3: Display \n4:Exit \n");

printf("\nEnter your choice for stack demo");

scanf("%d",&ch);

switch(ch)

case 1: start = insertfront();

break;

case 2: start = deletefront();

break;

case 3: display();

break;

default : return;

7
Program
return;

int main()

int ch,i,n;

while(1)

printf("\n~~~Menu~~~");

printf("\nEnter your choice for SLL operation \n");

printf("\n1:Create SLL of Student Nodes");

printf("\n2:DisplayStatus"); printf("\

n3:InsertAtEnd"); printf("\n4:DeleteAtEnd");

printf("\n5:Stack Demo using SLL(Insertion and Deletion at Front)");

printf("\n6:Exit \n");

printf("\nEnter your choice:");

scanf("%d",&ch);

switch(ch)

case 1 : printf("\nEnter the no of students: ");

scanf("%d",&n);

for(i=1;i<=n;i++)

start = insertfront();

break;

8
Program

case 2: display();

break;

case 3: start = insertend();

break;

case 4: start = deleteend();

break;

case 5: stackdemo();

break;

case 6: exit(0);

default: printf("\nPlease enter the valid choice");

Output:-
~~~Menu~~~
Enter your choice for SLL operation
1: Create SLL of Student Nodes
2: DisplayStatus
3: InsertAtEnd
4:DeleteAtEnd
5:Stack Demo using SLL(Insertion and Deletion at Front)

9
Program
6:Exit
Enter your choice:1
Enter the no of students: 3
Enter the usn,Name,Branch, sem,PhoneNo of the student:
111
aaa
cs
1
111111
Enter the usn,Name,Branch, sem,PhoneNo of the student:
222
bbb
ec
2
222222
Enter the usn,Name,Branch, sem,PhoneNo of the student:
333
ccc
ec
3
333333
~~~Menu~~~

1
Program
Enter your choice for SLL operation
1:Create SLL of Student Nodes
2:DisplayStatus
3:InsertAtEnd
4:DeleteAtEnd
5:Stack Demo using SLL(Insertion and Deletion at Front)
6:Exit
Enter your choice:2
The contents of SLL:
||1|| USN:333| Name:ccc| Branch:ec| Sem:3| Ph:333333|
||2|| USN:222| Name:bbb| Branch:ec| Sem:2| Ph:222222|
||3|| USN:111| Name:aaa| Branch:cs| Sem:1| Ph:111111|
No of student nodes is 3
~~~Menu~~~
Enter your choice for SLL operation
1:Create SLL of Student Nodes
2:DisplayStatus
3:InsertAtEnd
4:DeleteAtEnd
5:Stack Demo using SLL(Insertion and Deletion at Front)
6:Exit
Enter your choice:3

1
Program
Enter the usn,Name,Branch, sem,PhoneNo of the student:
444
ddd
ec
4
444444
~~~Menu~~~
Enter your choice for SLL operation
1:Create SLL of Student Nodes
2:DisplayStatus
3:InsertAtEnd
4:DeleteAtEnd
5:Stack Demo using SLL(Insertion and Deletion at Front)
6:Exit
Enter your choice:2
The contents of SLL:
||1|| USN:333| Name:ccc| Branch:ec| Sem:3| Ph:333333|
||2|| USN:222| Name:bbb| Branch:ec| Sem:2| Ph:222222|
||3|| USN:111| Name:aaa| Branch:cs| Sem:1| Ph:111111|
||4|| USN:444| Name:ddd| Branch:ec| Sem:4| Ph:444444|
No of student nodes is 4
~~~Menu~~~

1
Program
Enter your choice for SLL operation
1:Create SLL of Student Nodes
2:DisplayStatus
3:InsertAtEnd
4:DeleteAtEnd
5:Stack Demo using SLL(Insertion and Deletion at Front)
6:Exit
Enter your choice:4
The student node with the usn: 444 is deleted
~~~Menu~~~
Enter your choice for SLL operation
1:Create SLL of Student Nodes
2:DisplayStatus
3:InsertAtEnd
4:DeleteAtEnd
5:Stack Demo using SLL(Insertion and Deletion at Front)
6:Exit
Enter your choice:2
The contents of SLL:
||1|| USN:333| Name:ccc| Branch:ec| Sem:3| Ph:333333|
||2|| USN:222| Name:bbb| Branch:ec| Sem:2| Ph:222222|
||3|| USN:111| Name:aaa| Branch:cs| Sem:1| Ph:111111|

1
Program
No of student nodes is 3
~~~Menu~~~
Enter your choice for SLL operation
1:Create SLL of Student Nodes
2:DisplayStatus
3:InsertAtEnd
4:DeleteAtEnd
5:Stack Demo using SLL(Insertion and Deletion at Front)
6:Exit
Enter your choice:4
The student node with the usn: 111 is deleted
~~~Menu~~~
Enter your choice for SLL operation
1:Create SLL of Student Nodes
2:DisplayStatus
3:InsertAtEnd
4:DeleteAtEnd
5:Stack Demo using SLL(Insertion and Deletion at Front)
6:Exit
Enter your choice:5
~~~Stack Demo using SLL~~~
1:Push operation

1
Program
2: Pop operation
3: Display
4:Exit
Enter your choice for stack demo: 1
Enter the usn,Name,Branch, sem,PhoneNo of the student:
555
eee
cs
1
555555
~~~Stack Demo using SLL~~~
1:Push operation
2: Pop operation
3: Display
4:Exit
Enter your choice for stack demo:3
The contents of SLL:
||1|| USN:555| Name:eee| Branch:cs| Sem:1| Ph:555555|
||2|| USN:333| Name:ccc| Branch:ec| Sem:3| Ph:333333|
||3|| USN:222| Name:bbb| Branch:ec| Sem:2| Ph:222222|
No of student nodes is 3
~~~Stack Demo using SLL~~~

1
Program
1:Push operation
2: Pop operation
3: Display
4:Exit
Enter your choice for stack demo: 1
Enter the usn,Name,Branch, sem,PhoneNo of the student:
666
fff
cs
6
666666
~~~Stack Demo using SLL~~~
1:Push operation
2: Pop operation
3: Display
4:Exit
Enter your choice for stack demo: 3
The contents of SLL:
||1|| USN:666| Name:fff| Branch:cs| Sem:6| Ph:666666|
||2|| USN:555| Name:eee| Branch:cs| Sem:1| Ph:555555|
||3|| USN:333| Name:ccc| Branch:ec| Sem:3| Ph:333333|
||4|| USN:222| Name:bbb| Branch:ec| Sem:2| Ph:222222|

1
Program
No of student nodes is 4
~~~Stack Demo using SLL~~~
1:Push operation
2: Pop operation
3: Display
4:Exit
Enter your choice for stack demo: 2
The Student node with usn: 666 is deleted

~~~Stack Demo using SLL~~~


1:Push operation
2: Pop operation
3: Display
4:Exit
Enter your choice for stack demo: 3
The contents of SLL:
||1|| USN:555| Name:eee| Branch:cs| Sem:1| Ph:555555|
||2|| USN:333| Name:ccc| Branch:ec| Sem:3| Ph:333333|
||3|| USN:222| Name:bbb| Branch:ec| Sem:2| Ph:222222|
No of student nodes is 3
~~~Stack Demo using SLL~~~

1
Program
1:Push operation
2: Pop operation
3: Display
4:Exit
Enter your choice for stack demo: 4
~~~Menu~~~
Enter your choice for SLL operation
1:Create SLL of Student Nodes
2:DisplayStatus
3:InsertAtEnd
4:DeleteAtEnd
5:Stack Demo using SLL(Insertion and Deletion at Front)
6:Exit
Enter your choice:6

1
Program
8.Develop a menu driven Program in C for the following operations on Doubly
Linked List (DLL) of Employee Data with the fields: SSN, Name, Dept,
Designation, Sal, Ph.No

a. Create a DLL of N Employees Data by using end insertion.

b. Display the status of DLL and count the number of nodes in it

c. Perform Insertion and Deletion at End of DLL

d. Perform Insertion and Deletion at Front of DLL

e. Demonstrate how this DLL can be used as Double Ended Queue.

f. Exit

Algorithm:-
Step 1: Start.

Step 2: Read the value of N. (N student‟s information)

Step 3: Create a doubly linked list. (DLL)

Step 4: Display the status of DLL.

Step 5: Count the number of nodes.

Step 6: Perform insertion at front of list.

Step 7: Perform deletion at the front of the list.

Step 8: Perform insertion at end of the list.

Step 9: Perform deletion at the end of the list.

Step 10: Demonstrate how doubly linked list can be used as double ended
queue.

Step 11: Stop.

Program:-
#include<stdio.h>

#include<stdlib.h>

1
Program

struct node

char ssn[25],name[25],dept[10],designation[25];

int sal;

long int phone;

struct node *llink;

struct node *rlink;

};

typedef struct node* NODE;

NODE first = NULL;

int count=0;

NODE create()

NODE enode;

enode = (NODE)malloc(sizeof(struct node));

if( enode== NULL)

printf("\nRunning out of memory");

exit(0);

printf("\nEnter the ssn,Name,Department,Designation,Salary,PhoneNo of


the employee: \n");

scanf("%s %s %s %s %d %ld", enode->ssn, enode->name, enode->dept,


enode->designation, &enode->sal, &enode->phone);

2
Program
enode->llink=NULL;

enode->rlink=NULL;

count++;

return enode;

NODE insertfront()

NODE temp;

temp = create();

if(first == NULL)

return temp;

temp->rlink = first;

first->llink = temp;

return temp;

void display()

NODE cur;

int nodeno=1;

cur = first;

if(cur == NULL)

printf("\nNo Contents to display in DLL");

3
Program
while(cur!=NULL)

printf("\nENode:%d||SSN:%s|Name:%s|Department:%s|Designation:%s|Salary:
%d|Phone no:%ld", nodeno, cur->ssn, cur->name,cur->dept, cur->designation,
cur->sal, cur->phone);

cur = cur->rlink;

nodeno++;

printf("\nNo of employee nodes is %d",count);

NODE deletefront()

NODE temp;

if(first == NULL)

printf("\nDoubly Linked List is empty");

return NULL;

if(first->rlink== NULL)

printf("\nThe employee node with the ssn:%s is deleted", first->ssn);

free(first);

count--;

return NULL;

4
Program
}

temp = first;

first = first->rlink;

temp->rlink = NULL;

first->llink = NULL;

printf("\nThe employee node with the ssn:%s is deleted",temp->ssn);

free(temp);

count--;

return first;

NODE insertend()

NODE cur, temp;

temp = create();

if(first == NULL)

return temp;

cur= first;

while(cur->rlink!=NULL)

cur = cur->rlink;

5
Program

cur->rlink = temp;

temp->llink = cur;

return first;

NODE deleteend()

NODE prev,cur;

if(first == NULL)

printf("\nDoubly Linked List is empty");

return NULL;

if(first->rlink == NULL)

printf("\nThe employee node with the ssn:%s is deleted",first->ssn);

free(first);

count--;

return NULL;

prev=NULL;

cur=first;

while(cur->rlink!=NULL)

6
Program
prev=cur;

cur = cur->rlink;

cur->llink = NULL;

printf("\nThe employee node with the ssn:%s is deleted",cur->ssn);

free(cur);

prev->rlink = NULL;

count--;

return first;

void deqdemo()

int ch;

while(1)

printf("\nDemo Double Ended Queue Operation");

printf("\n1:InsertQueueFront\n 2: DeleteQueueFront\n 3:InsertQueueRear\n


4:DeleteQueueRear\n 5:DisplayStatus\n 6: Exit \n");

scanf("%d", &ch);

switch(ch)

case 1: first=insertfront();

break;

case 2: first=deletefront();

break;

7
Program
case 3: first=insertend();

break;

case 4: first=deleteend();

break;

case 5: display();

break;

default : return;

void main()

int ch,i,n;

while(1)

printf("\n\n~~~Menu~~~");

printf("\n1:Create DLL of Employee Nodes");

printf("\n2:DisplayStatus"); printf("\

n3:InsertAtEnd"); printf("\n4:DeleteAtEnd");

printf("\n5:InsertAtFront"); printf("\

n6:DeleteAtFront");

printf("\n7:Double Ended Queue Demo using DLL");

printf("\n8:Exit \n");

8
Program
printf("\nPlease enter your choice: ");

scanf("%d",&ch);

switch(ch)

case 1 : printf("\nEnter the no of Employees: ");

scanf("%d",&n);

for(i=1;i<=n;i++)

first = insertend();

break;

case 2: display();

break;

case 3: first = insertend();

break;

case 4: first = deleteend();

break;

case 5: first = insertfront();

break;

case 6: first = deletefront();

break;

case 7: deqdemo();

break;

case 8 : exit(0);

default: printf("\nPlease Enter the valid choice");

9
Program
}

Output:-
~~~Menu~~~

1:Create DLL of Employee Nodes

2:DisplayStatus

3:InsertAtEnd

4:DeleteAtEnd

5:InsertAtFront

6:DeleteAtFront

7:Double Ended Queue Demo using DLL

8:Exit

Please enter your choice: 1

Enter the no of Employees: 2

Enter the ssn,Name,Department,Designation,Salary,PhoneNo of the employee:

111

aaa

dept1

des1

1000

11111

1
Program
Enter the ssn,Name,Department,Designation,Salary,PhoneNo of the employee:

222

bbb

dept2

des2

2000

22222

~~~Menu~~~

1:Create DLL of Employee Nodes

2:DisplayStatus

3:InsertAtEnd

4:DeleteAtEnd

5:InsertAtFront

6:DeleteAtFront

7:Double Ended Queue Demo using DLL

8:Exit

Please enter your choice: 2

ENode:1||SSN:111|Name:aaa|Department:dept1|Designation:des1|Salary:1000|P
hone no:11111

ENode:2||SSN:222|Name:bbb|Department:dept2|Designation:des2|Salary:2000|
Phone no:22222

No of employee nodes is 2

~~~Menu~~~

1:Create DLL of Employee Nodes

1
Program
2:DisplayStatus

3:InsertAtEnd

4:DeleteAtEnd

5:InsertAtFront

6:DeleteAtFront

7:Double Ended Queue Demo using DLL

8:Exit

Please enter your choice: 3

Enter the ssn,Name,Department,Designation,Salary,PhoneNo of the employee:

333

ccc

dept3

des3

3000

33333

~~~Menu~~~

1:Create DLL of Employee Nodes

2:DisplayStatus

3:InsertAtEnd

4:DeleteAtEnd

5:InsertAtFront

6:DeleteAtFront

7:Double Ended Queue Demo using DLL

8:Exit

1
Program
Please enter your choice: 2

ENode:1||SSN:111|Name:aaa|Department:dept1|Designation:des1|Salary:1000|P
hone no:11111

ENode:2||SSN:222|Name:bbb|Department:dept2|Designation:des2|Salary:2000|
Phone no:22222

ENode:3||SSN:333|Name:ccc|Department:dept3|Designation:des3|Salary:3000|P
hone no:33333

No of employee nodes is 3

~~~Menu~~~

1:Create DLL of Employee Nodes

2:DisplayStatus

3:InsertAtEnd

4:DeleteAtEnd

5:InsertAtFront

6:DeleteAtFront

7:Double Ended Queue Demo using DLL

8:Exit

Please enter your choice: 5

Enter the ssn,Name,Department,Designation,Salary,PhoneNo of the employee:

444

ddd

dept4

des4

4000

44444

1
Program

~~~Menu~~~

1:Create DLL of Employee Nodes

2:DisplayStatus

3:InsertAtEnd

4:DeleteAtEnd

5:InsertAtFront

6:DeleteAtFront

7:Double Ended Queue Demo using DLL

8:Exit

Please enter your choice: 2

ENode:1||SSN:444|Name:ddd|Department:dept4|Designation:des4|Salary:4000|
Phone no:44444

ENode:2||SSN:111|Name:aaa|Department:dept1|Designation:des1|Salary:1000|P
hone no:11111

ENode:3||SSN:222|Name:bbb|Department:dept2|Designation:des2|Salary:2000|
Phone no:22222

ENode:4||SSN:333|Name:ccc|Department:dept3|Designation:des3|Salary:3000|P
hone no:33333

No of employee nodes is 4

~~~Menu~~~

1:Create DLL of Employee Nodes

2:DisplayStatus

3:InsertAtEnd

4:DeleteAtEnd

5:InsertAtFront

1
Program
6:DeleteAtFront

7:Double Ended Queue Demo using DLL

8:Exit

Please enter your choice: 4

The employee node with the ssn:333 is deleted

~~~Menu~~~

1:Create DLL of Employee Nodes

2:DisplayStatus

3:InsertAtEnd

4:DeleteAtEnd

5:InsertAtFront

6:DeleteAtFront

7:Double Ended Queue Demo using DLL

8:Exit

Please enter your choice: 6

The employee node with the ssn:444 is deleted

~~~Menu~~~

1:Create DLL of Employee Nodes

2:DisplayStatus

3:InsertAtEnd

4:DeleteAtEnd

5:InsertAtFront

6:DeleteAtFront

7:Double Ended Queue Demo using DLL

1
Program
8:Exit

Please enter your choice: 2

ENode:1||SSN:111|Name:aaa|Department:dept1|Designation:des1|Salary:1000|P
hone no:11111

ENode:2||SSN:222|Name:bbb|Department:dept2|Designation:des2|Salary:2000|
Phone no:22222

No of employee nodes is 2

~~~Menu~~~

1:Create DLL of Employee Nodes

2:DisplayStatus

3:InsertAtEnd

4:DeleteAtEnd

5:InsertAtFront

6:DeleteAtFront

7:Double Ended Queue Demo using DLL

8:Exit

Please enter your choice: 7

Demo Double Ended Queue Operation

1:InsertQueueFront

2: DeleteQueueFront

3:InsertQueueRear

4:DeleteQueueRear

5:DisplayStatus

6: Exit

1
Program

The employee node with the ssn:111 is deleted

Demo Double Ended Queue Operation

1:InsertQueueFront

2: DeleteQueueFront

3:InsertQueueRear

4:DeleteQueueRear

5:DisplayStatus

6: Exit

The employee node with the ssn:222 is deleted

Demo Double Ended Queue Operation

1:InsertQueueFront

2: DeleteQueueFront

3:InsertQueueRear

4:DeleteQueueRear

5:DisplayStatus

6: Exit

Doubly Linked List is empty

Demo Double Ended Queue Operation

1:InsertQueueFront

2: DeleteQueueFront

3:InsertQueueRear

1
Program
4:DeleteQueueRear

5:DisplayStatus

6: Exit

~~~Menu~~~

1:Create DLL of Employee Nodes

2:DisplayStatus

3:InsertAtEnd

4:DeleteAtEnd

5:InsertAtFront

6:DeleteAtFront

7:Double Ended Queue Demo using DLL

8:Exit

Please enter your choice: 8

1
Program
9. Develop a Program in C for the following operations on Singly Circular
Linked List (SCLL)

with header nodes

a. Represent and Evaluate a Polynomial P(x,y,z) = 6x2y2z-4yz5+3x3yz+2xy5z-


2xyz3

b. Find the sum of two polynomials POLY1(x,y,z) and POLY2(x,y,z) and store
the result in POLYSUM(x,y,z)

Support the program with appropriate functions for each of the above operations

Algorithm:-
Step 1: Start.

Step 2: Read a polynomial.

Step 3: Represent the polynomial using singly circular linked list.

Step 3: Evaluate the given polynomial

Step 4: Read two polynomials and find the sum of the polynomials.

Step 5: Stop

Program:-
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

#define COMPARE(x, y) ( (x == y) ? 0 : (x > y) ? 1 : -1)

struct node

int coef;

int xexp, yexp, zexp;

struct node *link;

1
Program
};

typedef struct node *NODE;

NODE getnode()

NODE x;

x = (NODE) malloc(sizeof(struct node));

if(x == NULL)

printf("Running out of memory \n");

return NULL;

return x;

NODE attach(int coef, int xexp, int yexp, int zexp, NODE head)

NODE temp, cur;

temp = getnode();

temp->coef = coef;

temp->xexp = xexp;

temp->yexp = yexp;

temp->zexp = zexp;

cur = head->link;

while(cur->link != head)

2
Program
cur = cur->link;

cur->link = temp;

temp->link = head;

return head;

NODE read_poly(NODE head)

int i, j, coef, xexp, yexp, zexp, n;

printf("\nEnter the no of terms in the polynomial: ");

scanf("%d", &n);

for(i=1; i<=n; i++)

printf("\n\tEnter the %d term: ",i);

printf("\n\t\tCoef = ");

scanf("%d", &coef);

printf("\n\t\tEnter Pow(x) Pow(y) and Pow(z): ");

scanf("%d", &xexp);

scanf("%d", &yexp);

scanf("%d", &zexp);

head = attach(coef, xexp, yexp, zexp, head);

return head;

3
Program
void display(NODE head)

NODE temp;

if(head->link == head)

printf("\nPolynomial does not exist.");

return;

temp = head->link;

while(temp != head)

printf("%dx^%dy^%dz^%d", temp->coef, temp->xexp, temp->yexp,


temp->zexp);

temp = temp->link;

if(temp != head)

printf(" + ");

int poly_evaluate(NODE head)

int x, y, z, sum = 0;

NODE poly;

printf("\nEnter the value of x,y and z: ");

4
Program
scanf("%d %d %d", &x, &y, &z);

poly = head->link;

while(poly != head)

sum += poly->coef * pow(x,poly->xexp)* pow(y,poly->yexp) *


pow(z,poly->zexp);

poly = poly->link;

return sum;

NODE poly_sum(NODE head1, NODE head2, NODE head3)

NODE a, b;

int coef;

a = head1->link;

b = head2->link;

while(a!=head1 && b!=head2)

while(1)

if(a->xexp == b->xexp && a->yexp == b->yexp && a->zexp ==


b->zexp)

coef = a->coef + b->coef;

5
Program
head3 = attach(coef, a->xexp, a->yexp, a->zexp, head3);

a = a->link;

b = b->link;

break;

} //if ends here

if(a->xexp!=0 || b->xexp!=0)

switch(COMPARE(a->xexp, b->xexp))

case -1 : head3 = attach(b->coef, b->xexp, b->yexp, b-


>zexp, head3);

b = b->link;

break;

case 0 : if(a->yexp > b->yexp)

head3 = attach(a->coef, a->xexp, a->yexp,


a->zexp, head3);

a = a->link;

break;

else if(a->yexp < b->yexp)

head3 = attach(b->coef, b->xexp, b-


>yexp, b->zexp, head3);

6
Program
b = b->link;

break;

else if(a->zexp > b->zexp)

head3 = attach(a->coef, a->xexp, a->yexp,


a- >zexp, head3);

a = a->link;

break;

else if(a->zexp < b->zexp)

head3 = attach(b->coef, b->xexp, b->yexp,


b- >zexp, head3);

b = b->link;

break;

case 1 : head3 = attach(a->coef,a->xexp,a->yexp,a-


>zexp,head3);

a = a->link;

break;

} //switch ends here

break;

} //if ends here

if(a->yexp!=0 || b->yexp!=0)

7
Program
{

switch(COMPARE(a->yexp, b->yexp))

case -1 : head3 = attach(b->coef, b->xexp, b->yexp,


b->zexp, head3);

b = b->link;

break;

case 0 : if(a->zexp > b->zexp)

head3 = attach(a->coef, a->xexp, a-


>yexp, a->zexp,
head3);
a = a->link;

break;

else if(a->zexp < b->zexp)

head3 = attach(b->coef, b->xexp, b-


>yexp, b->zexp, head3);

b = b->link;

break;

case 1 : head3 = attach(a->coef, a->xexp, a->yexp,


a->zexp, head3);

a = a->link;

break;

8
Program
break;

if(a->zexp!=0 || b->zexp!=0)

switch(COMPARE(a->zexp,b->zexp))

case -1 : head3 = attach(b->coef,b->xexp,b-


>yexp,b->zexp,head3);

b = b->link;

break;

case 1 : head3 = attach(a->coef, a->xexp, a-


>yexp, a->zexp, head3);

a = a->link;

break;

break;

while(a!= head1)

head3 = attach(a->coef,a->xexp,a->yexp,a->zexp,head3);

a = a->link;

while(b!= head2)

9
Program
{

head3 = attach(b->coef,b->xexp,b->yexp,b->zexp,head3);

b = b->link;

return head3;

void main()

NODE head, head1, head2, head3;

int res, ch;

head = getnode(); /* For polynomial evalaution */

head1 = getnode(); /* To hold POLY1 */

head2 = getnode(); /* To hold POLY2 */

head3 = getnode(); /* To hold POLYSUM */

head->link=head;

head1->link=head1;

head2->link=head2;

1
Program
head3->link= head3;

while(1)

printf("\n~~~Menu~~~");

printf("\n1.Represent and Evaluate a Polynomial P(x,y,z)");

printf("\n2.Find the sum of two polynomials POLY1(x,y,z)");

printf("\nEnter your choice:");

scanf("%d",&ch);

switch(ch)

case 1: printf("\n~~~~Polynomial evaluation P(x,y,z)~~~\n");

head = read_poly(head);

printf("\nRepresentation of Polynomial for evaluation:


\n");

display(head);

res = poly_evaluate(head);

printf("\nResult of polynomial evaluation is : %d \n",


res);

break;

case 2: printf("\nEnter the POLY1(x,y,z): \n");

head1 = read_poly(head1); printf("\

nPolynomial 1 is: \n"); display(head1);

1
Program

printf("\nEnter the POLY2(x,y,z): \n");

head2 = read_poly(head2); printf("\

nPolynomial 2 is: \n"); display(head2);

printf("\nPolynomial addition result: \n");

head3 = poly_sum(head1,head2,head3);

display(head3);

break;

case 3: exit(0);

Output:-

~~~Menu~~~

1. Represent and Evaluate a Polynomial P(x,y,z)

2. Find the sum of two polynomials POLY1(x,y,z) and POLY2(x,y,z)

Enter your choice: 1

~~~~Polynomial evaluation P(x,y,z)~~~

Enter the no of terms in the polynomial: 5

Enter the 1 term:

Coef = 6

1
Program
Enter Pow(x) Pow(y) and Pow(z): 2 2 1

Enter the 2 term:

Coef = -4

Enter Pow(x) Pow(y) and Pow(z): 0 1 5

Enter the 3 term:

Coef = 3

Enter Pow(x) Pow(y) and Pow(z): 3 1 1

Enter the 4 term:

Coef = 2

Enter Pow(x) Pow(y) and Pow(z): 1 5 1

Enter the 5 term:

Coef = -2

Enter Pow(x) Pow(y) and Pow(z): 1 1 3

Representation of Polynomial for evaluation:

6x^2y^2z^1 + -4x^0y^1z^5 + 3x^3y^1z^1 + 2x^1y^5z^1 + -2x^1y^1z^3

Enter the value of x,y and z: 1 1 1

Result of polynomial evaluation is : 5

~~~Menu~~~

1. Represent and Evaluate a Polynomial P(x,y,z)

2. Find the sum of two polynomials POLY1(x,y,z) and

POLY2(x,y,z) Enter your choice: 2

Enter the POLY1(x,y,z):

Enter the no of terms in the polynomial: 5

Enter the 1 term:

1
Program
Coef = 6

Enter Pow(x) Pow(y) and Pow(z): 4 4 4

Enter the 2 term:

Coef = 3

Enter Pow(x) Pow(y) and Pow(z): 4 3 1

Enter the 3 term:

Coef = 5

Enter Pow(x) Pow(y) and Pow(z): 0 1 1

Enter the 4 term:

Coef = 10

Enter Pow(x) Pow(y) and Pow(z): 0 1 0

Enter the 5 term:

Coef = 5
Enter Pow(x) Pow(y) and Pow(z): 0 0 0

Polynomial 1 is:

6x^4y^4z^4 + 3x^4y^3z^1 + 5x^0y^1z^1 + 10x^0y^1z^0 + 5x^0y^0z^0

Enter the POLY2(x,y,z):

Enter the no of terms in the polynomial: 5

Enter the 1 term:

Coef = 8

Enter Pow(x) Pow(y) and Pow(z): 4 4 4

Enter the 2 term:

Coef = 4

Enter Pow(x) Pow(y) and Pow(z): 4 2 1

1
Program
Enter the 3 term:

Coef = 30

Enter Pow(x) Pow(y) and Pow(z): 0 1 0

Enter the 4 term:

Coef = 20

Enter Pow(x) Pow(y) and Pow(z): 0 0 1

Enter the 5 term:

Coef = 3

Enter Pow(x) Pow(y) and Pow(z): 0 0 0

Polynomial 2 is:

8x^4y^4z^4 + 4x^4y^2z^1 + 30x^0y^1z^0 + 20x^0y^0z^1 + 3x^0y^0z^0

Polynomial addition result:

14x^4y^4z^4 + 3x^4y^3z^1 + 4x^4y^2z^1 + 5x^0y^1z^1 + 40x^0y^1z^0 +


20x^0y^0z^1 + 8x^0y^0z^0

~~~Menu~~~

1. Represent and Evaluate a Polynomial P(x,y,z)

2. Find the sum of two polynomials POLY1(x,y,z) and

POLY2(x,y,z) Enter your choice:3

1
Program
10. Develop a menu driven Program in C for the following operations on Binary
Search Tree

(BST) of Integers .

a. Create a BST of N Integers: 6, 9, 5, 2, 8, 15, 24, 14, 7, 8, 5, 2

b. Traverse the BST in Inorder, Preorder and Post Order

c. Search the BST for a given element (KEY) and report the appropriate
message

d. Exit

Algorithm:-

Step 1: Start.

Step 2: Create a Binary Search Tree for N elements.

Step 3: Traverse the tree in inorder.

Step 4: Traverse the tree in preorder

Step 6: Traverse the tree in postorder.

Step 7: Search the given key element in the BST.

Step 8: Delete an element from BST.

Step 9: Stop

Program:-

#include<stdio.h>

#include<stdlib.h>

struct BST

int data;

struct BST *lchild;

struct BST *rchild;

1
Program
};

typedef struct BST * NODE;

NODE create()

NODE temp;

temp = (NODE) malloc(sizeof(struct BST));

printf("\nEnter The value: ");

scanf("%d", &temp->data);

temp->lchild = NULL;

temp->rchild = NULL;

return temp;

void insert(NODE root, NODE newnode);

void inorder(NODE root);

void preorder(NODE root);

void postorder(NODE root);

void search(NODE root);

void insert(NODE root, NODE newnode)

/*Note: if newnode->data == root->data it will be skipped. No duplicate


nodes are allowed */

if (newnode->data < root->data)

if (root->lchild == NULL)

2
Program
root->lchild = newnode;

else

insert(root->lchild, newnode);

if (newnode->data > root->data)

if (root->rchild == NULL)

root->rchild = newnode;

else

insert(root->rchild, newnode);
}

void search(NODE root)

int key;

NODE cur;

if(root == NULL)

printf("\nBST is empty.");

return;

printf("\nEnter Element to be searched: ");

scanf("%d", &key);

cur = root;

3
Program
while (cur != NULL)

if (cur->data == key)

printf("\nKey element is present in BST");

return;

if (key < cur->data)

cur = cur->lchild;

else

cur = cur->rchild;
}

printf("\nKey element is not found in the BST");

void inorder(NODE root)

if(root != NULL)

inorder(root->lchild);

printf("%d ", root->data);

inorder(root->rchild);

4
Program
void preorder(NODE root)

if (root != NULL)

printf("%d ", root->data);

preorder(root->lchild);

preorder(root->rchild);

void postorder(NODE root)

if (root != NULL)

postorder(root->lchild);

postorder(root->rchild);

printf("%d ", root->data);

void main()

int ch, key, val, i, n;

NODE root = NULL, newnode;

while(1)

5
Program
printf("\n~~~~BST MENU~~~~");

printf("\n1.Create a BST");

printf("\n2.Search"); printf("\

n3.BST Traversals: "); printf("\

n4.Exit");

printf("\nEnter your choice: ");

scanf("%d", &ch);

switch(ch)

case 1: printf("\nEnter the number of elements: ");

scanf("%d", &n);

for(i=1;i<=n;i++)

newnode = create();

if (root == NULL)

root = newnode;

else

insert(root, newnode);

break;

case 2: if (root == NULL)

printf("\nTree Is Not Created");

else

6
Program
printf("\nThe Preorder display : ");

preorder(root);

printf("\nThe Inorder display : ");

inorder(root);

printf("\nThe Postorder display : ");

postorder(root);

break;

case 3: search(root);

break;

case 4: exit(0);

Output:-

~~~~BST MENU~~~~
1.Create a BST
2.Search
3. BST Traversals:
4. Exit
Enter your choice: 1
Enter the number of elements: 12
Enter The value: 6
Enter The value: 9
Enter The value: 5
Enter The value: 2
Enter The value: 8
Enter The value: 15

7
Program
Enter The value: 24
Enter The value: 14
Enter The value: 7
Enter The value: 8
Enter The value: 5
Enter The value: 2

~~~~BST MENU~~~~
1.Create a BST
2.Search
3. BST Traversals:
4. Exit
Enter your choice: 3

The Pre order display:


6 5 2 9 8 7 15 14 24

The In order display:


2 5 6 7 8 9 14 15 24

The Post order display:

2 5 7 8 14 24 15 9 6

~~~~BST MENU~~~~

1.Create a BST

2.Search

3. BST Traversals:

4. Exit

Enter your choice: 2

Enter Element to be searched: 66

Key element is not found in the BST

~~~~BST MENU~~~~

1.Create a BST

2.Search

8
Program
3. BST Traversals:

4. Exit

Enter your choice: 2

Enter Element to be searched: 14

Key element is present in BST

~~~~BST MENU~~~~

1.Create a BST

2.Search

3.BST Traversals:

4.Exit

Enter your choice: 4

9
Program
11. Develop a Program in C for the following operations on Graph(G) of Cities

a. Create a Graph of N cities using Adjacency Matrix.

b. Print all the nodes reachable from a given starting node in a digraph using
DFS/BFS method.

Algorithm:-
Step 1: Start.

Step 2: Input the value of N nodes of the graph

Step 3: Create a graph of N nodes using adjacency matrix representation.

Step 3: Print the nodes reachable from the starting node using BFS.

Step 4: Check whether graph is connected or not using DFS.

Step 5: Stop.

Program:-
#include<stdio.h>
#include<stdlib.h>

int a[50][50], n, visited[50];

int q[20], front = -1,rear = -1;

int s[20], top = -1, count=0;

void bfs(int v)

int i, cur;

visited[v] = 1; q[+

+rear] = v;

while(front!=rear)

cur = q[++front];

1
Program
for(i=1;i<=n;i++)

if((a[cur][i]==1)&&(visited[i]==0))

q[++rear] = i;

visited[i] = 1;

printf("%d ", i);

void dfs(int v)

int i;

visited[v]=1; s[+

+top] = v;

for(i=1;i<=n;i++)

if(a[v][i] == 1&& visited[i] == 0 )

printf("%d ", i);

dfs(i);

2
Program
}

int main()

int ch, start, i,j;

printf("\nEnter the number of vertices in graph: ");

scanf("%d",&n);

printf("\nEnter the adjacency matrix:\n");

for(i=1; i<=n; i++)

for(j=1;j<=n;j++)

scanf("%d",&a[i][j]);

for(i=1;i<=n;i++)

visited[i]=0;

printf("\nEnter the starting vertex: ");

scanf("%d",&start);

printf("\n==>1. BFS: Print all nodes reachable from a given starting


node");

printf("\n==>2. DFS: Print all nodes reachable from a given starting


node");

printf("\n==>3:Exit"); printf("\

nEnter your choice: ");

scanf("%d", &ch);

switch(ch)

3
Program
{

case 1: printf("\nNodes reachable from starting vertex %d are: ", start);

bfs(start);

for(i=1;i<=n;i++)

if(visited[i]==0)

printf("\nThe vertex that is not reachable is %d" ,i);

break;

case 2: printf("\nNodes reachable from starting vertex %d are:\n",start);

dfs(start);

break;

case 3: exit(0);

default: printf("\nPlease enter valid choice:");

Output:-

Case 1:

Enter the number of vertices in graph: 4

4
Program
Enter the adjacency matrix:

0 1 0 1

0 0 1 0

0 0 0 1
0 0 0 0

~~~Menu~~~~

==>1. BFS: Print all nodes reachable from a given starting node

==>2. DFS: Print all nodes reachable from a given starting node

==>3:Exit

Enter your choice: 1

Enter the starting vertex: 1

Nodes reachable from starting vertex 1 are: 2 4 3

Case 2:

Enter the number of vertices in graph: 4

Enter the adjacency matrix:

0 1 0 1

0 0 1 0

0 0 0 1
0 0 0 0

~~~Menu~~~~

==>1. BFS: Print all nodes reachable from a given starting node

==>2. DFS: Print all nodes reachable from a given starting node

==>3:Exit

Enter your choice: 1

5
Program
Enter the starting vertex: 2

Nodes reachable from starting vertex 2 are: 3 4

The vertex that is not reachable is 1

Case 3:

Enter the number of vertices in graph: 4

Enter the adjacency matrix:

0 1 0 1

0 0 1 0

0 0 0 1
0 0 0 0

~~~Menu~~~~

==>1. BFS: Print all nodes reachable from a given starting node

==>2. DFS: Print all nodes reachable from a given starting node

==>3:Exit

Enter your choice: 2

Enter the starting vertex: 1

Nodes reachable from starting vertex 1 are: 2 3 4

Case 4:

Enter the number of vertices in graph: 4

Enter the adjacency matrix:

0 1 0 1

0 0 1 0

0 0 0 1
0 0 0 0

6
Program
~~~Menu~~~~

==>1. BFS: Print all nodes reachable from a given starting node

==>2. DFS: Print all nodes reachable from a given starting node

==>3:Exit

Enter your choice: 2

Enter the starting vertex: 2

Nodes reachable from starting vertex 2 are: 3 4

7
Program
12. Given a File of N employee records with a set K of Keys (4-digit) which
uniquely determine the records in file F. Assume that file F is maintained in
memory by a Hash Table (HT) of m memory locations with L as the set of
memory addresses (2-digit) of locations in HT. Let the keys in K and addresses
in L are Integers. Develop a Program in C that uses Hash function H:K →L as
H(K)=K mod m (remainder method), and implement hashing technique to map
a given key K to the address space L. Resolve the collision (if any) using linear
probing.

Algorithm:-
Step 1: Start.

Step 2: Given a File of N employee records with a set K of Keys (4-digit) which
uniquely determine the records in file F.

Step 3: Assume that file F is maintained in memory by a Hash Table (HT) of m


memory locations with L as the set of memory addresses (2-digit) of locations
in HT.

Step 4: Let the keys in K and addresses in L are Integers

Step 5: Hash function H: K ®L as H(K)=K mod m (remainder method)

Step 6: Hashing as to map a given key K to the address space L, Resolve the
collision (if any) is using linear probing.

Step 7: Stop.

Program:-
#include<stdio.h>

#include<stdlib.h>

int key[20],n,m;

int *ht,index;

int count = 0;

1
Program
void insert(int key)

index = key % m;

while(ht[index] != -1)

index = (index+1)%m;

ht[index] = key;

count++;

void display()

int i;

if(count == 0)

printf("\nHash Table is empty");

return;

printf("\nHash Table contents are:\n ");

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

printf("\n T[%d] --> %d ", i, ht[i]);

2
Program
void main()

int i;

printf("\nEnter the number of employee records (N) : ");

scanf("%d", &n);

printf("\nEnter the two digit memory locations (m) for hash table: ");

scanf("%d", &m);

ht = (int *)malloc(m*sizeof(int));

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

ht[i] = -1;

printf("\nEnter the four digit key values (K) for N Employee Records:\n
");

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

scanf("%d", &key[i]);

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

if(count == m)

printf("\n~~~Hash table is full. Cannot insert the record %d


key~~~",i+1);

break;

insert(key[i]);
3
Program
}

//Displaying Keys inserted into hash table

display();

Output:-
Enter the number of employee records (N) : 12

Enter the two digit memory locations (m) for hash table: 15

Enter the four digit key values (K) of 'N' Employee Records:

1234

5678

3456

2345

6799

1235

7890

3214

3456

1235

5679

2346

Hash Table contents are:

T[0] --> 7890

T[1] --> -1

4
Program
T[2] --> -1

T[3] --> -1

T[4] --> 1234

T[5] --> 2345

T[6] --> 3456

T[7] --> 6799

T[8] --> 5678

T[9] --> 1235

T[10] --> 3214

T[11] --> 3456

T[12] --> 1235

T[13] --> 5679

T[14] --> 2346

You might also like