All Programs DS
All Programs DS
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
int STACK[MAX],TOP;
/* display stack element*/
void display(int []);
void main()
{
int ITEM=0;
int choice=0;
TOP=-1;
while(1)
{
/*clrscr();*/
printf("Enter Choice (1: display, 2: insert (PUSH), 3: remove(POP)), 4: Exit..:");
scanf("%d",&choice);
switch(choice)
{
case 1:
display(STACK);
break;
case 2:
printf("Enter Item to be insert :");
scanf("%d",&ITEM);
PUSH(STACK,ITEM);
break;
case 3:
POP(STACK);
break;
case 4:
exit(0);
default:
printf("\nInvalid choice.");
break;
}
getch();
}// end of while(1)
/* function : display(),
to display stack elements.
*/
void display(int stack[])
{
int i=0;
if(TOP==-1)
{
printf("Stack is Empty .\n");
return;
}
/* function : PUSH(),
to push an item into stack.
*/
void PUSH(int stack[],int item)
{
if(TOP==MAX-1)
{
printf("\nSTACK is FULL CAN't ADD ITEM\n");
return;
}
TOP++;
stack[TOP]=item;
}
/* function : POP(),
to pop an item from stack.
*/
void POP(int stack[])
{
int deletedItem;
if(TOP==-1)
{
printf("STACK is EMPTY.\n");
return;
}
deletedItem=stack[TOP];
TOP--;
printf("%d deleted successfully\n",deletedItem);
return;
}
#define MAX 30
int top=-1;
int stack[MAX];
void push(char);
char pop();
int match(char a,char b);
int check(char []);
int main()
{
char exp[MAX];
int valid;
printf("Enter an algebraic expression : ");
gets(exp);
valid=check(exp);
if(valid==1)
printf("Valid expression\n");
else
printf("Invalid expression\n");
return 0;
}
int check(char exp[] )
{
int i;
char temp;
for(i=0;i<strlen(exp);i++)
{
if(exp[i]=='(' || exp[i]=='{' || exp[i]=='[')
push(exp[i]);
if(exp[i]==')' || exp[i]=='}' || exp[i]==']')
if(top==-1) /*stack empty*/
{
printf("Right parentheses are more than left parentheses\n");
return 0;
}
else
{
temp=pop();
if(!match(temp, exp[i]))
{
printf("Mismatched parentheses are : ");
printf("%c and %c\n",temp,exp[i]);
return 0;
}
}
}
if(top==-1) /*stack empty*/
{
printf("Balanced Parentheses\n");
return 1;
}
else
{
printf("Left parentheses more than right parentheses\n");
return 0;
}
}/*End of main()*/
int match(char a,char b)
{
if(a=='[' && b==']')
return 1;
if(a=='{' && b=='}')
return 1;
if(a=='(' && b==')')
return 1;
return 0;
}/*End of match()*/
char pop()
{
if(top==-1)
{
printf("Stack Underflow\n");
exit(1);
}
return(stack[top--]);
}/*End of pop()*/
//Infix to Postfix
#include<stdio.h>
char stack[20];
int top = -1;
void push(char x)
{
stack[++top] = x;
}
char pop()
{
if(top == -1)
return -1;
else
return stack[top--];
}
int priority(char x)
{
if(x == '(')
return 0;
if(x == '+' || x == '-')
return 1;
if(x == '*' || x == '/'||x== '%')
return 2;
if(x=='^')
return 3;
}
main()
{
char exp[20];
char *e, x;
printf("Enter the expression :: ");
scanf("%s",exp);
e = exp;
while(*e != '\0')
{
if(isalnum(*e))
printf("%c",*e);
else if(*e == '(')
push(*e);
else if(*e == ')')
{
while((x = pop()) != '(')
printf("%c", x);
}
else
{
while(priority(stack[top]) >= priority(*e))
printf("%c",pop());
push(*e);
}
e++;
}
// while(top != -1)
// {
// printf("%c",pop());
// }
}
void push(int x)
{
stack[++top] = x;
}
int pop()
{
if(top == -1)
return -1;
else
return stack[top--];
}
int main()
{
char exp[20];
char *e;
int n1,n2,n3,num;
printf("Enter the expression :: ");
scanf("%s",exp);
e = exp;
while(*e != '\0')
{
if(isdigit(*e))
{
num = *e - 48;
push(num);
}
else
{
n1 = pop();
n2 = pop();
switch(*e)
{
case '+':
{
n3 = n1 + n2;
break;
}
case '-':
{
n3 = n2 - n1;
break;
}
case '*':
{
n3 = n1 * n2;
break;
}
case '/':
{
n3 = n2 / n1;
break;
}
}
push(n3);
}
e++;
}
printf("\nThe result of expression %s = %d\n\n",exp,pop());
return 0;
}
#include<conio.h>
#include<stdlib.h>
#define MAX 5
void main ()
printf ("\n1:INSERTION\n2:DELETION\n3:DISPLAY\n4:EXIT\n");
while (1)
scanf ("%d",&ch);
switch (ch)
case 1 :
if (rear == MAX -1)
else
if (front == -1)
front = 0 ;
scanf ("%d",&num);
rear = rear + 1 ;
queue[rear] = num ;
break ;
case 2 :
if (front == -1)
else
}
break ;
case 3 :
if (front == -1 )
printf("\nQueue is empty");
else
printf("\n%d",queue[i]);
printf ("\n");
break ;
case 4 :
exit (0);
default :
}
}
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<malloc.h>
struct node
{
int data ;
struct node *next ;
}*head ;
int main ()
{
int n ,pos,data,i,choice;
printf ("\nEnter the number of the nodes:\t");
scanf ("%d",&n);
for (i=0;i<=n;i++)
{
count++ ;
}
createList(n);
printf ("\nList is :");
displayList();
printf("\n 1: Enter Beginning\t 2: Enter End\t 3: Enter after position\t 4: Enter Before
Position\t 5: Enter at position");
printf("\n 6: Delete Beginning\t 7: Delete End\t 8: Delete after position\t 9: Delete Before
Position\t 10: Delete at position");
printf("\n 11: Reverse List\t 12: Search number from List");
while(1)
{
printf("\nEnter Your Choice");
scanf("%d",&choice);
switch(choice)
{
case 1:
insertBeginning () ;
printf ("\nList after inserting the begginning :");
displayList();
break;
case 2:
printf ("\nEnter the new node at end");
scanf ("%d",&data);
insertEnd (data);
printf ("\nList after entering at end:");
displayList();
break;
case 3:
insert_after_pos ();
printf ("\nThe new list after entering after given position");
displayList();
break;
case 4:
printf ("\nEnter the pos for entering before");
scanf ("%d",&pos);
insert_before_pos (pos) ;
printf ("\nThe new list after entering before given position");
displayList();
break;
case 5:
printf ("\nEnter the pos for entering at position");
scanf ("%d",&pos);
insert_at_pos (pos) ;
printf ("\nThe new list after entering the element at given position");
displayList();
break;
case 6:
delete_beginning ();
printf ("\nList after deleting at beginning :");
displayList();
break;
case 7:
delete_end ();
printf ("\nList after deleting at end :");
displayList();
break;
case 8:
delete_after_pos ();
printf ("\nList afetr deleting node after the given position :");
displayList();
break;
case 9:
delete_before_pos ();
printf ("\nList afetr deleting node before the given position :");
displayList();
break;
case 10:
delete_from_pos ();
printf ("\nList afetr deleting node at the given position :");
displayList();
break;
case 11:
reverse();
printf ("\nReversed list is :");
displayList();
break;
case 12:
search_element();
break;
case 13:
exit(0);
default:
printf("\n Wrong Choice");
}
}
void createList (int n)
{
struct node *newnode , *temp ;
int i ;
head = 0 ;
}
printf("\n");
printf("\nCOUNT IS %d",count);
}
}
void insertBeginning ()
{
struct node *temp ;
temp = (struct node*)malloc(sizeof(struct node));
printf ("\nEnter the data at the beginning of the list :");
scanf ("\n%d",&temp->data);
temp->next = head ;
head = temp ;
}
void insertEnd(int data)
{
struct node *newNode, *temp;
newNode = (struct node*)malloc(sizeof(struct node)); //Allocating memory to the node
newNode->data=data;
newNode->next = NULL;
temp = head;
// Traverse to the end of the list
while(temp->next != NULL)
temp = temp->next;
temp->next = newNode; // newNode is made as the last node
}
void insert_after_pos ()
{
int i=1,pos;
struct node *temp,*newnode;
newnode = (struct node*)malloc(sizeof(struct node));
printf ("\nEnter the position after which the new node to be inserted");
scanf("\n%d",&pos) ;
if (pos>count)
{
printf("\nInvalid position");
}
else
{
temp = head ;
void delete_beginning ()
{
struct node *temp;
temp=head;
head=head->next;
free(temp);
}
void delete_end ()
{
struct node *temp,*prevnode;
temp=head;
while(temp->next!=0)
{
prevnode=temp;
temp=temp->next;
}
if(temp==head)
{
head=0;
}
else
{
prevnode->next=0;
}
free(temp);
}
void delete_from_pos ()
{
int i=1,pos;
struct node *temp,*nextnode;
temp = head ; //bringing temp at starting
printf("\nEnter position for deleting element at given position");
scanf("\n%d",&pos);
if (pos > count)
{
printf ("\nInvalid position");
}
else
{
while(i<pos-1)
{
temp=temp->next;
i++;
}
nextnode=temp->next;
temp->next=nextnode->next;
free(nextnode);
}
}
void delete_after_pos ()
{
int i=1,pos;
struct node *temp,*deletednode;
temp = head ; //bringing temp at starting
printf("\nEnter position for deleting after position element");
scanf("\n%d",&pos);
if (pos > count)
{
printf ("\nInvalid position");
}
else
{
while(i<pos)
{
temp=temp->next;
i++;
}
deletednode=temp->next;
temp->next=deletednode->next;
free(deletednode);
}
}
void delete_before_pos ()
{
int i=1,pos;
struct node *temp,*prevnode;
temp = head ; //bringing temp at starting
printf("\nEnter position for deleting before position element");
scanf("\n%d",&pos);
if (pos > count)
{
printf ("\nInvalid position");
}
else
{
while(i<pos-1)
{
prevnode=temp;
temp=temp->next;
i++;
}
prevnode->next=temp->next;
free(temp);
}
}
void reverse ()
{
struct node *current,*prev,*nextnode;
prev=0;
current=nextnode=head;
while(nextnode!=0)
{
nextnode=nextnode->next;
current->next=prev;
prev=current;
current=nextnode;
}
head=prev;
}
void search_element()
{
int data,i=1;
struct node* temp;
printf("\nEnter data to search");
scanf("\n%d",&data);
temp = head;
while(temp != NULL) // Start traversing from head node
{
if(temp -> data == data)
{
printf("\nElement found at position %d",i);
break;
}
else
{
i=i+1;
temp = temp -> next;
}
}
if(temp==0)
printf("\n Element %d is not found in the list\n",data);
}
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<malloc.h>
struct node
{
int data ;
struct node *next ;
}*head, *tail;
int main ()
{
int n ,pos,data,i,choice;
printf ("\nEnter the number of the nodes:\t");
scanf ("%d",&n);
for (i=0;i<=n;i++)
{
count++ ;
}
createList(n);
printf ("\nList is :");
displayList();
printf("\n 1: Enter Beginning\t 2: Enter End\t 3: Enter after position\t 4: Enter Before
Position\t 5: Enter at position");
printf("\n 6: Delete Beginning\t 7: Delete End\t 8: Delete after position\t 9: Delete Before
Position\t 10: Delete at position");
printf("\n 11: Even Odd\t 12: Search number from List");
while(1)
{
printf("\nEnter Your Choice");
scanf("%d",&choice);
switch(choice)
{
case 1:
insertBeginning () ;
printf ("\nList after inserting the begginning :");
displayList();
break;
case 2:
insertEnd ();
printf ("\nList after entering at end:");
displayList();
break;
case 3:
insert_after_pos ();
printf ("\nThe new list after entering after given position");
displayList();
break;
case 4:
printf ("\nEnter the pos for entering before");
scanf ("%d",&pos);
insert_before_pos (pos) ;
printf ("\nThe new list after entering before given position");
displayList();
break;
case 5:
printf ("\nEnter the pos for entering at position");
scanf ("%d",&pos);
insert_at_pos (pos) ;
printf ("\nThe new list after entering the element at given position");
displayList();
break;
case 6:
delete_beginning ();
printf ("\nList after deleting at beginning :");
displayList();
break;
case 7:
delete_end();
printf ("\nList after deleting at end :");
displayList();
break;
case 8:
delete_after_pos();
printf ("\nList afetr deleting node after the given position :");
displayList();
break;
case 9:
delete_before_pos();
printf ("\nList afetr deleting node before the given position :");
displayList();
break;
case 10:
delete_from_pos();
printf ("\nList afetr deleting node at the given position :");
displayList();
break;
case 11:
countEvenOdd();
//printf ("\nReversed list is :");
// displayList();
break;
case 12:
search_element();
break;
case 13:
exit(0);
default:
printf("\n Wrong Choice");
}
}
void createList(int n)
{
struct node *newnode;
int i;
head=0;
for(i=0;i<n;i++)
{
newnode=(struct node*)malloc(sizeof(struct node));
printf("\nEnter new node");
scanf("%d",&newnode->data);
newnode->next=0;
if(head==0)
{
head=tail=newnode;
tail->next=head;
}
else
{
tail->next=newnode;
tail=newnode;
tail->next=head;
}
void displayList()
{
struct node *temp;
if(head == NULL)
{
printf("\nList is empty.");
}
else
{
temp = head;
while(temp -> next != head)
{
printf("%d\t", temp->data);
temp = temp->next;
}
printf("%d\t", temp->data);
}
printf("Circular Print %d",tail->next->data);
}
void insertBeginning()
{
struct node *newNode ;
newNode = (struct node*)malloc(sizeof(struct node));
printf ("\nEnter the data at the beginning of the list :");
scanf ("\n%d",&newNode->data);
newNode->next = head ;
head = newNode ;
tail->next=head;
}
void insertEnd()
{
//Create new node
struct node *newNode, *temp;
newNode = (struct node*)malloc(sizeof(struct node));
printf("\n Enter data to insert at end\n");
scanf("%d",&newNode->data);
tail->next=newNode;
tail=newNode;
tail->next=head;
}
void insert_after_pos()
{
int i=1,pos;
struct node *temp,*newnode;
newnode = (struct node*)malloc(sizeof(struct node));
printf ("\nEnter the position after which the new node to be inserted");
scanf("\n%d",&pos) ;
if (pos>count)
{
printf("\nInvalid position");
}
else
{
temp = head ;
void delete_beginning()
{
struct node *temp;
temp=head;
head=head->next;
free(temp);
tail->next=head;
}
void delete_end()
{
struct node *temp,*prev;
temp=head;
while(temp -> next != head)
{
prev = temp;
temp = temp -> next;
}
free(temp);
tail=prev;
tail -> next = head;
}
void delete_from_pos()
{
int i=1,pos;
struct node *temp,*nextnode;
temp = head ; //bringing temp at starting
printf("\nEnter position for deleting element at given position");
scanf("\n%d",&pos);
if (pos==1)
{
delete_beginning();
}
else
{
while(i<pos-1)
{
temp=temp->next;
i++;
}
nextnode=temp->next;
temp->next=nextnode->next;
free(nextnode);
}
}
void delete_after_pos()
{
int i=1,pos;
struct node *temp,*deletednode;
temp = head ; //bringing temp at starting
printf("\nEnter position for deleting after position element");
scanf("\n%d",&pos);
if (pos > count)
{
printf ("\nInvalid position");
}
else
{
while(i<pos)
{
temp=temp->next;
i++;
}
deletednode=temp->next;
temp->next=deletednode->next;
free(deletednode);
}
}
void delete_before_pos ()
{
int i=1,pos;
struct node *temp,*prevnode;
temp = head ; //bringing temp at starting
printf("\nEnter position for deleting before position element");
scanf("\n%d",&pos);
if (pos > count)
{
printf ("\nInvalid position");
}
else
{
while(i<pos-1)
{
prevnode=temp;
temp=temp->next;
i++;
}
prevnode->next=temp->next;
free(temp);
}
}
void search_element()
{
int data,i=1;
struct node* temp;
printf("\nEnter data to search");
scanf("\n%d",&data);
temp = head;
while(temp != NULL) // Start traversing from head node
{
if(temp -> data == data)
{
printf("\nElement found at position %d",i);
break;
}
else
{
i=i+1;
temp = temp -> next;
}
}
if(temp==0)
printf("\n Element %d is not found in the list\n",data);
}
void countEvenOdd()
{
struct node *temp;
int count=0,evencount=0,oddcount=0;
temp = head ;
while (temp->next!= head)
{
if(temp->data%2==0)
{
printf("\n%d is Even Number",temp->data);
printf("\tStored at %u",temp);
evencount++;
}
else
{
printf("\n%d is Odd Number",temp->data);
printf("\tStored at %u",temp);
oddcount++;
}
temp = temp->next ;
count++ ;
}
if(temp->data%2==0)
{
printf("\n%d is Even Number",temp->data);
printf("\tStored at %u",temp);
evencount++;
}
else
{
printf("\n%d is Odd Number",temp->data);
printf("\tStored at %u",temp);
oddcount++;
}
count++;
printf("\n");
printf("\nEven COUNT IS %d",evencount);
printf("\nOdd COUNT IS %d",oddcount);
printf("\nCOUNT IS %d",count);
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<stdlib.h>
struct node
{
struct node *prev ;
int data ;
struct node *next ;
};
struct node *head , *tail ;
static int count ;
void createList (int n) ;
void display() ;
void insert_at_beginning () ;
void insert_at_end () ;
void insert_after_pos () ;
void insert_before_pos(); //Or insert at position
void delete_beginning () ;
void delete_end () ;
void delete_from_pos () ;
void reverse_list();
void search_element();
int main ()
{
int n,i ;
printf("\nCreating the list");
printf("\nEnter the total no of nodes\t") ;
scanf("\n%d",&n) ;
for (i=0;i<=n;i++)
{
count++ ;
}
createList (n) ;
insert_at_beginning () ;
printf ("\nThe list is :") ;
display() ;
insert_at_end () ;
printf ("\nThe list is :") ;
display() ;
insert_after_pos () ;
printf ("\nThe list is :") ;
display() ;
insert_before_pos () ;
printf ("\nThe list is :") ;
display() ;
delete_beginning () ;
printf ("\nThe list after deleting from beginning :") ;
display() ;
delete_end () ;
printf ("\nThe list after deleting from the end :") ;
display() ;
delete_from_pos () ;
printf ("\nThe list after deleted at given position :") ;
display() ;
reverse_list();
display();
search_element();
}
void createList(int n)
{
struct node *newnode ;
int i ;
head = 0 ;
for (i=1; i<=n ;i++)
{
newnode = (struct node*)malloc(sizeof(struct node));
printf ("\nEnter the new node ") ;
scanf("\n%d",&newnode->data) ;
newnode->next = 0 ;
newnode->prev = 0 ;
if (head == 0)
{
head = tail = newnode ;
}
else
{
tail->next = newnode ;
newnode->prev = tail ;
tail = newnode ;
}
}
}
void display()
{
struct node *temp ;
int count = 0 ;
if (head == NULL)
{
printf("\nList is empty");
}
else
{
temp = head ;
while (temp != NULL)
{
printf("\n%d",temp->data);
temp = temp->next ;
count++ ;
}
printf("\n");
printf("\nCOUNT IS %d",count);
}
}
void insert_at_beginning ()
{
struct node *newnode = (struct node*)malloc(sizeof(struct node)) ;
printf("\nInsert the data to insert at the beginning of the list :") ;
scanf("\n%d",&newnode->data) ;
newnode->prev = 0 ;
head->prev = newnode ;
newnode->next = head ;
head = newnode ;
//Newnode is now the front node i.e. head node
}
void insert_at_end ()
{
struct node *newnode = (struct node*)malloc(sizeof(struct node));
printf("\nEnter data at the end : ") ;
scanf ("\n%d",&newnode->data) ;
newnode->next = 0 ;
newnode->prev = 0 ;
tail->next = newnode ;
newnode->prev = tail ; //prev of newnode becaomes the value of tail
tail = newnode ; //Tail is at now last position
}
void insert_after_pos ()
{
struct node *newnode , *temp ;
int i=1, pos ;
printf ("\nEnter the position after which the newnode to be inserted :") ;
scanf("\n%d",&pos) ;
//printf("Count=%d",count);
if (pos > count)
{
printf ("\nInavalid position entered please enter valid position ") ;
}
else
{
temp = head ;
newnode = (struct node*)malloc(sizeof(struct node)) ; //allocationg the memory location
printf ("\nInsert the data at given position");
scanf("%d",&newnode->data) ;
newnode->next = 0 ;
newnode->prev = 0 ;
while (i < pos)
{
temp = temp->next ;
i++ ;
}
newnode->next = temp->next ;
temp->next->prev=newnode;
newnode->prev = temp ;
temp->next = newnode ;
}
void insert_before_pos () //Or at position
{
struct node *newnode , *temp ;
int i=1, pos ;
newnode = (struct node*)malloc(sizeof(struct node));
printf ("\nEnter the position before which the newnode to be inserted :") ;
scanf("\n%d",&pos) ;
if (pos > count)
{
printf ("\nInavalid position entered please enter valid position ") ;
}
else
{
if (pos == 1 )
{
insert_at_beginning () ;
}
else
{
temp = head ;
}
void reverse_list()
{
//Creating temporary node
struct node *temp;
struct node *current;
current=head;
/* swapping next and previous pointers until all nodes are reversed */
while (current!= NULL)
{ //swapping
temp= current->prev;
current->prev = current->next;
current->next = temp;
current= current->prev;
}
if(temp!= NULL ) //update head_ptr
head= temp->prev;
}
void search_element()
{
int data,i=1;
struct node* temp;
printf("\nEnter data to search");
scanf("\n%d",&data);
temp = head;
while(temp != NULL) // Start traversing from head node
{
if(temp -> data == data)
{
printf("\nElement found at position %d",i);
break;
}
else
{
i=i+1;
temp = temp -> next;
}
}
if(temp==0)
printf("\n Element %d is not found in the list\n",data);
}
struct node
{
int data;
struct node*next;
};
struct node *front=0,*rear=0;
int main()
{
int i=1,select,item;
while(i)
{
printf("\nMainMenu");
printf("\n1:ENQUEUE");
printf("\n2:DEQUEUE");
printf("\n3:DISPLAY");
printf("\n4:EXIT");
printf("\nEnteryourchoice");
scanf("\n%d",&select);
switch(select)
{
case 1:
printf("\nEnter the data to insert in the Queue from rear:");
scanf("\n%d",&item);
enqueue(item);
break;
case 2:
printf("\nDeletingfromthefront:");
dequeue();
break;
case 3:
printf("\nThelistis:");
display();
break;
case 4:
exit(0);
break;
default:
printf("\nInvalid Choice");
break;
}
printf("\n Do u want to contineu, please enter 1 or 0\n");
scanf("%d", &i);
}
return 0;
}
void enqueue(int n)
{
struct node *newnode;
newnode=(struct node*)malloc(sizeof(struct node));
newnode->data=n;
newnode->next=0;
if(front==0&&rear==0)
{
front=rear=newnode;
}
else
{
rear->next=newnode;
rear=newnode;
}
void dequeue()
{
struct node *temp;
if(front==0&&rear==0)
{
printf("\nUnderflow");
}
else
{
temp=front;
printf("\nDeleted item is %d",front->data);
front=front->next;
free(temp);
}
}
void display()
{
struct node *temp;
temp=front;
if(front==NULL)
{
printf("\nUnderflow");
}
else
{
while(temp!=NULL)
{
printf("\t%d",temp->data);
temp=temp->next;
}
}
}
#include<stdio.h>
#include<stdlib.h>
struct Node
{
int data;
struct Node *next;
}*top = NULL; // Initially the list is empty
void push(int);
void pop();
void display();
int main()
{
int choice, value;
printf("\nIMPLEMENTING STACKS USING LINKED LISTS\n");
while(1){
printf("1. Push\n2. Pop\n3. Display\n4. Exit\n");
printf("\nEnter your choice : ");
scanf("%d",&choice);
switch(choice)
{
case 1: printf("\nEnter the value to insert: ");
scanf("%d", &value);
push(value);
break;
case 2: pop();
break;
case 3: display();
break;
case 4: exit(0);
break;
void pop()
{
if(top == NULL)
printf("\nEMPTY STACK\n");
else{
struct Node *temp = top;
printf("\nPopped Element : %d", temp->data);
printf("\n");
top = temp->next; // After popping, make the next node as TOP
free(temp);
}}
void display()
{
// Print the stack
if(top == NULL)
printf("\nEMPTY STACK\n");
else
{
printf("The stack is \n");
struct Node *temp = top;
while(temp->next != NULL){
printf("%d--->",temp->data);
temp = temp -> next;
}
printf("%d--->NULL\n\n",temp->data);
}}
void main()
{
int n,i,s,ch,j;
char c,dummy;
printf("ENTER THE NUMBER VERTICES" );
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("ENTER 1 IF %d HAS A NODE WITH %d ELSE 0 ",i,j);
scanf("%d",&a[i][j]);
}
}
printf("THE ADJACENCY MATRIX IS\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
while(1)
{
for(i=1;i<=n;i++)
vis[i]=0;
printf("\nMENU");
printf("\n1.B.F.S");
printf("\n2.D.F.S");
printf("\nENTER YOUR CHOICE");
scanf("%d",&ch);
printf("ENTER THE SOURCE VERTEX :");
scanf("%d",&s);
switch(ch)
{
case 1:bfs(s,n);
break;
case 2:
dfs(s,n);
break;
}
}
}//main exit
if((a[p][i]!=0)&&(vis[i]==0))
{
add(i);
vis[i]=1;
}
}
p=delete();
if(p!=0)
printf("%d",p);
}
for(i=1;i<=n;i++)
if(vis[i]==0)
bfs(i,n);
}
int delete()
{
int k;
if((front>rear)||(front==-1))
return(0);
else
{
k=q[front++];
return(k);
}
}
int pop()
{
int k;
if(top==-1)
return(0);
else
{
k=stack[top--];
return(k);
}
}
#include<conio.h>
#include<stdlib.h>
int data;
}node;
node *create()
{
node *p;
int x;
scanf("%d",&x);
if(x==-1)
return NULL;
p=(node*)malloc(sizeof(node));
p->data=x;
p->left=create();
p->right=create();
return p;
if(t!=NULL)
if(t!=NULL)
inorder(t->left);
if(t!=NULL)
postorder(t->left);
postorder(t->right);
int main()
{
node *root;
root=create();
preorder(root);
inorder(root);
postorder(root);
return 0;
//Implementation of BST
#include <stdio.h>
#include <stdlib.h>
struct node
};
if (n == NULL)
else if(n->data == i)
printf("\nValue found!");
search(i, n->right_child);
else
search(i, n->left_child);
if (node==NULL)
return;
else
/* do the subtrees */
//mirror(node->left_child);
//mirror(node->right_child);
temp = node->left_child;
node->left_child = node->right_child;
node->right_child = temp;
root = root->left_child;
root = root->right_child;
return root;
p = malloc(sizeof(struct node));
p->data = x;
p->left_child = NULL;
p->right_child = NULL;
return p;
if(root==NULL)
return new_node(x);
root->left_child = insert(root->left_child,x);
return root;
if(root==NULL)
return NULL;
if (x>root->data)
else if(x<root->data)
else
//No Children
free(root);
return NULL;
//One Child
{
struct node *temp;
if(root->left_child==NULL)
temp = root->right_child;
else
temp = root->left_child;
free(root);
return temp;
//Two Children
else
root->data = temp->data;
return root;
}
}
int main()
/*
20
/ \
/ \
5 30
/ \ /\
/ \ / \
1 15 25 40
/ \
/ \
9 45
/ \ /
/ \ /
7 12 42
*/
int x;
root = new_node(20);
insert(root,5);
insert(root,1);
insert(root,15);
insert(root,9);
insert(root,7);
insert(root,12);
insert(root,30);
insert(root,25);
insert(root,40);
insert(root, 45);
insert(root, 42);
inorder(root);
printf("\n");
inorder(root);
//postorder(root)
printf("\n");
min=smallest(root);
max=largest(root);
scanf("%d",&x);
search(x,root);
mirror(root);
inorder(root);
return 0;
}
//Program to apply Binary Search Algorithm on the given array (Iterative)
#include<stdio.h>
#include<conio.h>
int mid,flag=0;
while(low<=high)
mid=(low+high)/2;
if(a[mid]==key)
flag=1;
return mid;
else if(key<a[mid])
flag=0; high=mid-1;
binary(low,high,key,a);
else
flag=0; low=mid+1;
binary(low,high,key,a);
if(flag==0) return-1;
void main()
{
int a[100],high,low,i,n,key,result;
//clrscr();
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&key);
low=0;high=n-1;
result=binary(low,high,key,a);
if(result==-1)
else
#include<stdlib.h>
#define size 10
int main() {
scanf("%d", &num);
scanf("%d", &list[i]);
low = 0;
high = num - 1;
scanf("%d", &key);
if (position != -1) {
} else
return (0);
int mid;
return -1;
if (x == a[mid]) {
return (mid);
} else {