SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
/* IMPLEMENTATION OF THE STACK USING ARRAYS */
/* STACK_A.C */
# include<stdio.h>
# include<string.h>
# include<ctype.h>
#include<conio.h>
# define size 3

int top = -1;
int flag = 0;
int stack[size];
void push(int *, int);
int pop(int *);
void display(int *);

/* Definition of the push function */
void push(int s[], int d)
{
       if(top ==(size-1))
               flag = 0;
       else
       {       flag = 1;
               ++top;
               s[top] = d;
       }
}

/* Definition of the pop function */
int pop(int s[])
{       int popped_element;
        if(top == -1)
        { popped_element = 0;
                 flag = 0;
        }
        else
        {        flag = 1;
                 popped_element = s[top];
                 --top;
        }
        return (popped_element);
}

/* Definition of the display function */
void display(int s[])
{      int i;
       if(top == -1)
               printf("n Stack is empty");
       else
       { for(i = top; i >= 0; --i)
                        printf("n %d", s[i] );
       }
}
/* Function main */
void main()
{      int data;
       char choice;
       int q = 0;
       int top = -1;
       clrscr();
       do
       {       printf(" n enter i to insert");
               printf(" n enter p to delete");
               printf(" n enter q to quit");
               printf("n enter your choice : ");
               do
               {       choice = getchar();
                       choice =tolower(choice);
               }while(strchr("ipq",choice)==NULL);

               switch(choice)
               {
               case 'i' : printf("n Input the element to push:");
                         scanf("%d", &data);
                         push(stack, data);
                         if(flag)
                         {        printf("n After inserting ");
                                  display(stack);
                                  if(top == (size-1))
                                          printf("n Stack is full");
                         }
                         else printf("n Stack overflow after pushing");
                         break;

              case 'p' : data = pop(stack);
                       if(flag)
                       {        printf("n Data is popped: %d", data);
                                printf("n Rest data in stack is as follows:n");
                                display(stack);
                       }
                       else printf("n Stack underflow" );
                       break;
              case 'q': q = 1;
              }
       } while(!q);
}
/* THIS PROGRAM DEMONSTRATES THE STACK OPERATIONS USING OOPS-
CLASS STACK*/
/* cstack.cpp */

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
 class stack
  { int stack[30];
    int top,n;
    public:
     stack()
     { top=-1; //indicates stack is empty
          n=5;
     }
     void push(int);
     int pop();
     void display();
   };

 void stack::push(int x)
 { if(top<n)
       { top++;
         stack[top]=x;
       }
   else cout<<"n the stack is full";
 }

 int stack::pop()
  { int v=-99;
     if(top>=0)
          { v=stack[top];
            top--;
          }
    return v;
   }
  void stack::display()
   { int i;
         if(top>=0)
           { for(i=top;i>=0;i--)
              cout<<stack[i]<<" ";
           }
         else cout<<"n stack is empty";
    }
  void main()
   { stack s;
     char ch; int x;
     clrscr();
         do
          { cout<<"n enter i to insert an element";
            cout<<"n enter d to view the contents";
            cout<<"n enter r to remove an element";
cout<<"n enter q to quit";
         cout<<"n enter your choice : ";
         cin>>ch;
          switch(ch)
           { case 'i': cout<<"n enter the value to insert";
                          cin>>x;
                          s.push(x);
                          break;
             case 'd': cout<<"n";
                          s.display();
                          break;
             case 'r': x=s.pop();
                          if(x==-99) cout<<"n stack is empty";
                          else cout<<" n the element removed is "<<x;
                          break;
            }
        }while(ch!='q');
  }

OUTPUT:

enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : r

stack is empty
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : i

enter the value to insert : 1

enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : i

enter the value to insert : 2

enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : i

enter the value to insert : -1
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : d

-1 2 1
 enter the value to insert : 2

enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : i

enter the value to insert : -1

enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : d

-1 2 1
 enter i to insert an element
 enter d to view the contents
 enter r to remove an element
 enter q to quit
 enter your choice : r

the element removed is -1
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : r

the element removed is 2
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : r

the element removed is 1
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : r

stack is empty
/*THE FOLLOWING PROGRAM CONVERTS ANY infix EXPRESSION TO POSTFIX
postfix.c */

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>

int precedence(char op)
{
  switch(op)
  {
    case '-':return 1;
    case '+':return 1;
    case '*':return 2;
    case '/':return 2;
    case '$':return 3;
    case '(':return 0;
  }
return -1;
}

 void push(char a[],int *top,char ch)
 { a[*top]=ch;
   (*top)++;
 }

 char pop(char a[],int *top)
  { *top=*top-1;
    return a[*top];
  }

 void main()
 {
   int top=0,i=0,j=0,k,l,length=0;
   char stack[50],infix[50],postfix[50];
   char ch;
   clrscr();
   cout<<"Enter the infix expression : n";
   scanf("%s",infix);
   length=strlen(infix);
     for(i=0;i<length;i++)
      {
        if(infix[i]=='(')
        push(stack,&top,infix[i]);

        if(isalpha(infix[i]))
             { postfix[j]=infix[i];
               j++;
             }
if(infix[i]==')')
          { while(stack[top-1]!='(')
               { postfix[j]=pop(stack,&top);
                    j++;
               }
         pop(stack,&top);
      }
    if(infix[i]=='+'||infix[i]=='-'||infix[i]=='/'||infix[i]=='*'||infix[i]=='$')
        { if(precedence(stack[top-1])<precedence(infix[i]))
           push(stack,&top,infix[i]);

         else
           { while(precedence(stack[top-1])>=precedence(infix[i]))
                { postfix[j]=pop(stack,&top);
                   j++;
                 }
           push(stack,&top,infix[i]);
           }
         }
}
   while(top!=0)
      { postfix[j]=pop(stack,&top);
        j++;
      }
   cout<<"nThe postfix expression is :n";
  for(k=0;k<j;k++)
   cout<<postfix[k];
getch();
}


OUTPUT:



Enter the infix expression :
(((X*Y-A*B)-D/F)+A)*B

The postfix expression is :
XY*AB*-DF/-A+B*
do you want to continue (y/n) : y
Enter the infix expression :
A*B-P/(Q*(A-C+P*D)/B)

The postfix expression is :
AB*PQAC-PD*+*B//-
do you want to continue (y/n) : n
/* INSERTION AND DELETION IN A QUEUE ARRAY IMPLEMENTATION */
/* queue_a.c */

# include<stdio.h>
# include<string.h>
# include<ctype.h>
# include<stdlib.h>
# define size 5

int ch;
int q[size];
int rear = 0;
int front = 0;

void Insert_queue();
void Delete_queue();
void Display_queue();

/* Function to create queue */
void Insert_queue()
{      printf("n Input the element :");
       scanf("%d", &ch);
       if(rear < size)
          { rear ++;
               q[rear] = ch ;
               if(front == 0)
                       front = 1;
          }
       else printf("n Queue is overflow");
}

/* Function to perform delete operation */
void Delete_queue()
{      if (front == 0)
          {    printf("n Underflow");
               return ;
          }
       else
       {       ch = q[front];
               printf("n Element deleted : %d", ch);
       }
       if(front == rear)
       {       front = 0;
               rear = 0;
       }
       else front = front + 1;
}
/* Output function */
void Display_queue() //char q[])
{      int i;
       if (front == 0)
               return;
       for(i = front ; i <= rear; i++)
               printf(" %d ", q[i]);
}

/* Function main */
void main()
{
       int k = 0;
       char choice;
       clrscr();
       do
       {       printf("nInsert->i Delete->d Quit->q:");
               printf("nInput the choice : ");
               do
               { choice = getchar();
                  choice = tolower(choice);
               }while(strchr("idq",choice)==NULL);
        switch(choice)
               {
               case 'i' : Insert_queue();
                           printf("n Queue after inserting ");
                           Display_queue();
                           break;

               case 'd' : Delete_queue();
                          printf("n Queue after deleting:n");
                          Display_queue();
                          break;
               case 'q': k = 1;
               }
        } while(!k);
}
/* THIS PROGRAM DEMONSTRATES OPERATIONS ON A CIRCULAR QUEUE
USING OOPS-CLASS QUEUE –cqueue.cpp*/

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
 class queue
  { int q[30]; //queue declaration
    int f,r ;
    int n;
    public:
     queue() //constructor
     { f=r=0; //indicates queue is empty
          n=5;
     }
     void insert(int);
     int delet();
     void display();
   };

 void queue::insert(int x)
  { if((r+1)%n==f)
          cout<<"n the queue is full";
    else
         { r=(r+1)%n;
           q[r]=x;
         }
  }
 int queue::delet()
  { int v=-99;
     if(f!=r)
          { f=(f+1)%n;
            v=q[f];
          }
     return v;
   }
  void queue::display()
   { int i;
         if(f!=r)
           { i=f;
             while(i!=r)
             { i=(i+1)%n;
               cout<<q[i]<<" ";
             }
           }
         else cout<<"n queue is empty";
    }
  void main()
   { queue s;
     char ch;int x;
     clrscr();
         do
{ cout<<"n enter i to insert an elemnt";
         cout<<"n enter d to view the contents";
         cout<<"n enter r to remove an elemnt";
         cout<<"n enter q to quit";
         cout<<"n enter your choice : ";
         cin>>ch;
          switch(ch)
           { case 'i': cout<<"n enter the value to insert";
                          cin>>x;
                          s.insert(x);
                          break;
             case 'd': cout<<"n";
                          s.display();
                          break;
             case 'r': x=s.delet();
                          if(x==-99) cout<<"n queue is empty";
                          else cout<<" n the element removed is "<<x;
                          break;
            }
        }while(ch!='q');
  }

OUTPUT :

assume size of queue is 3 integers
Insert->i Delete->d Quit->q:
Input the choice : i

Input the element :1

Queue after inserting 1
Insert->i Delete->d Quit->q:
Input the choice : i

Input the element :2

Queue after inserting 1 2
Insert->i Delete->d Quit->q:
Input the choice : d

Element deleted : 1
Queue after deleting: 2
Insert->i Delete->d Quit->q:
Input the choice : d

Element deleted : 2
 Queue after deleting:
queue is empty

Insert->i Delete->d Quit->q:
Input the choice : q
/* THIS PROGRAM DEMONSTRATES THE CREATION OF A SIMPLE LINKED LIST
INCORPORATING ALL FUNCTIONS OF INSERTION AND DELETION AT THE
BEGINNING , END AND AFTER ANY PARTICULAR NODE WITH DISPLAY FEATURES */
/* LINKLIST.C */

# include <stdio.h>
# include <malloc.h>

struct link
 { int info;
   struct link *next;
 };

int i,number;
struct link start, *previous, *new1;

void insertiona(struct link *);
void insertionb(struct link *);
void create_list(struct link *);
void insertione(struct link *);
void display(struct link *);
void delete_nodef(struct link *);
void delete_node(struct link *);
void delete_nodel(struct link *);

/* Function to create a linked list */
void create_list(struct link *node)
{      char ch;
       start.next = NULL; /* Empty list */

        node = &start; /* Point to the start of the list */
        i = 0;
        printf("n Input choice n for break: ");
        ch = getchar();
        while(ch != 'n')
        {
                node->next = (struct link* ) malloc(sizeof(struct link));
                node = node->next;
                printf("n Input the node: %d: ", i+1);
                scanf("%d", &node->info);
                node->next = NULL;
                fflush(stdin);
                printf("n Input choice n for break: ");
                ch = getchar();
                i++;
        }
        printf("n Total nodes = %d", i);
}

/* Inserting a node after a particular node*/
void insertiona(struct link *node)
{     int ins_node,x;
node = start.next;
       previous = &start;
       printf("n Input value of the nodeafter which you want to insert:");
       scanf("%d", &ins_node);

       while((node->info!=ins_node)&&(node!=NULL))
       node=node->next;
        if(node!=NULL)
              {        new1 = (struct link* ) malloc(sizeof(struct link));
                       printf("n enter the new value to be inserted : ");
                       scanf(" %d",&new1->info);
                        new1->next = node->next;
                       node->next = new1;
              }
        else
                printf("n insertion is not possible");


}

/* Display the list */
void display(struct link *node)
{     node = start.next;
        while (node)
         { printf(" %d ", node->info);
           node = node->next;
           printf(" ");
         }
}

void main()
{    int c;
       struct link *node = (struct link *) malloc(sizeof(struct link));
       clrscr();
       do
        { printf("n enter 1 to create the list");
         printf("n enter 2 to insert a node at the beginning");
         printf("n enter 3 to insert a node anywhere");
         printf("n enter 4 to append a node ");
         printf("n enter 5 to display the list");
         printf("n enter 6 to remove a node from beginning");
         printf("n enter 7 to remove a node anywhere");
         printf("n enter 8 to remove a node from the end");
         printf("n enter 9 to quit");
         printf("n enter your choice : ");
         scanf("%d",&c);
           switch(c)
            { case 1 : create_list(node);
                         printf("n Created list is as follows:n");
                         display(node);
                         break;
                case 2 : insertionb(node);
break;
                case 3 : insertiona(node);
                         break;
                case 4 : display(node);
                         insertione(node);
                         break;
                case 5 : display(node);
                         break;
                case 6 : delete_nodef(node);
                         break;
                case 7 : delete_node(node);
                         break;
                case 8 : delete_nodel(node);
                         break;
                case 9 : exit(0);
             }
         }while((c>=1)&&(c<=9));
    getch();
}

/* Inserting a node at the beginning*/

void insertionb(struct link *node)
{     node = start.next;
        previous = &start;
        new1 = (struct link* ) malloc(sizeof(struct link));
        new1->next = node ;
        previous->next = new1;
        printf("n Input the fisrt node value: ");
        scanf("%d", &new1->info);
}

/* Inserting a node at the end */
void insertione(struct link *node)
{       node = start.next;
        previous = &start;
        if(node==NULL)
           { printf("n the list is empty to create return ");
             return;
           }
        else
         { while(node->next!=NULL)
                 node = node->next;
          new1 = (struct link* ) malloc(sizeof(struct link));
          printf("n Input the value to be inserted at the end : ");
          scanf(" %d",&new1->info);
          node->next=new1;
          new1->next=NULL;
        }
}

/* Removing the first node */
void delete_nodef(struct link*node)
{    node = start.next;
       previous = &start;
         if (node == NULL)
                printf("n Under flow");
         else
           {    previous->next = node->next;
                free(node);
           }
}

/* Removing a node when information is known*/
void delete_node(struct link *node)
{      int node_number = 1;
       int del_node;

       node = start.next;
       previous = &start;
       printf("n Input information of a node you want to delete: ");
       scanf("%d", &del_node);
       while(node)
       { if(node->info == del_node)
               {     printf("n Position of the information in the list is : %d", node_number);
                       previous->next = node->next;
                       free(node);
                       break ;
               }
               else
               {     node = node->next;
                       previous = previous->next;
               }
               node_number++;
       }
}

/* Removing the last node */
void delete_nodel(struct link *node)
{      int node_number = 0;
       node = start.next;
       previous = &start;

       if (node == NULL)
          printf("n Underflow");
       else
         while(node)
                { node = node->next;
                  previous = previous->next;
                  node_number ++;
                }
       node = start.next;
       previous = &start;
while(node_number != 1)
    {      node = node->next;
           previous = previous->next;
           node_number --;
    }
    if(node_number == 1)
    {      previous->next = node->next;
           free(node);
    }
}

Contenu connexe

Tendances

Basic c programs updated on 31.8.2020
Basic c programs updated on 31.8.2020Basic c programs updated on 31.8.2020
Basic c programs updated on 31.8.2020vrgokila
 
Data Structure using C
Data Structure using CData Structure using C
Data Structure using CBilal Mirza
 
Double linked list
Double linked listDouble linked list
Double linked listSayantan Sur
 
design and analysis of algorithm Lab files
design and analysis of algorithm Lab filesdesign and analysis of algorithm Lab files
design and analysis of algorithm Lab filesNitesh Dubey
 
C programming array & shorting
C  programming array & shortingC  programming array & shorting
C programming array & shortingargusacademy
 
Data Structures Using C Practical File
Data Structures Using C Practical File Data Structures Using C Practical File
Data Structures Using C Practical File Rahul Chugh
 
Double linked list
Double linked listDouble linked list
Double linked listraviahuja11
 
Data Structures Practical File
Data Structures Practical File Data Structures Practical File
Data Structures Practical File Harjinder Singh
 
Data Structure in C Programming Language
Data Structure in C Programming LanguageData Structure in C Programming Language
Data Structure in C Programming LanguageArkadeep Dey
 
Circular linked list
Circular linked listCircular linked list
Circular linked listSayantan Sur
 
Single linked list
Single linked listSingle linked list
Single linked listSayantan Sur
 
Sorting programs
Sorting programsSorting programs
Sorting programsVarun Garg
 

Tendances (20)

Basic c programs updated on 31.8.2020
Basic c programs updated on 31.8.2020Basic c programs updated on 31.8.2020
Basic c programs updated on 31.8.2020
 
Struct examples
Struct examplesStruct examples
Struct examples
 
Data Structure using C
Data Structure using CData Structure using C
Data Structure using C
 
C programms
C programmsC programms
C programms
 
C lab manaual
C lab manaualC lab manaual
C lab manaual
 
Double linked list
Double linked listDouble linked list
Double linked list
 
design and analysis of algorithm Lab files
design and analysis of algorithm Lab filesdesign and analysis of algorithm Lab files
design and analysis of algorithm Lab files
 
C programming array & shorting
C  programming array & shortingC  programming array & shorting
C programming array & shorting
 
C PROGRAMS
C PROGRAMSC PROGRAMS
C PROGRAMS
 
Data Structures Using C Practical File
Data Structures Using C Practical File Data Structures Using C Practical File
Data Structures Using C Practical File
 
Double linked list
Double linked listDouble linked list
Double linked list
 
Data Structures Practical File
Data Structures Practical File Data Structures Practical File
Data Structures Practical File
 
Blocks+gcd入門
Blocks+gcd入門Blocks+gcd入門
Blocks+gcd入門
 
Data Structure in C Programming Language
Data Structure in C Programming LanguageData Structure in C Programming Language
Data Structure in C Programming Language
 
Circular linked list
Circular linked listCircular linked list
Circular linked list
 
Single linked list
Single linked listSingle linked list
Single linked list
 
C Prog - Array
C Prog - ArrayC Prog - Array
C Prog - Array
 
Graphics point clipping c program
Graphics point clipping c programGraphics point clipping c program
Graphics point clipping c program
 
Binary tree
Binary treeBinary tree
Binary tree
 
Sorting programs
Sorting programsSorting programs
Sorting programs
 

En vedette

Going mobile - A Technical Job Prep for Vassar Students
Going mobile - A Technical Job Prep for Vassar StudentsGoing mobile - A Technical Job Prep for Vassar Students
Going mobile - A Technical Job Prep for Vassar Studentsbryan costanich
 
Where we live in atlanta georgia usa
Where we live in atlanta georgia usaWhere we live in atlanta georgia usa
Where we live in atlanta georgia usarochesterdavisacademy
 
Running SagePFW in a Private Cloud
Running SagePFW in a Private CloudRunning SagePFW in a Private Cloud
Running SagePFW in a Private CloudVertical Solutions
 
FRx is Dead: Using SagePFW Intelligence
FRx is Dead: Using SagePFW IntelligenceFRx is Dead: Using SagePFW Intelligence
FRx is Dead: Using SagePFW IntelligenceVertical Solutions
 
Cross Platform Mobile Development with Xamarin
Cross Platform Mobile Development with XamarinCross Platform Mobile Development with Xamarin
Cross Platform Mobile Development with Xamarinbryan costanich
 
Cross Platform Development with Xamarin
Cross Platform Development with XamarinCross Platform Development with Xamarin
Cross Platform Development with Xamarinbryan costanich
 
Advanced android app lifecycle + Patterns
Advanced android app lifecycle + PatternsAdvanced android app lifecycle + Patterns
Advanced android app lifecycle + Patternsbryan costanich
 
Poetry Dedication Project
Poetry Dedication ProjectPoetry Dedication Project
Poetry Dedication ProjectJon_C
 
Cross-Platform Mobile Development in Visual Studio
Cross-Platform Mobile Development in Visual StudioCross-Platform Mobile Development in Visual Studio
Cross-Platform Mobile Development in Visual Studiobryan costanich
 
Vlnová analýza časových řad zesílení a expanze plantážního zemědělství v braz...
Vlnová analýza časových řad zesílení a expanze plantážního zemědělství v braz...Vlnová analýza časových řad zesílení a expanze plantážního zemědělství v braz...
Vlnová analýza časových řad zesílení a expanze plantážního zemědělství v braz...Miroslav Vereš
 
Lifestyle workbook
Lifestyle workbookLifestyle workbook
Lifestyle workbookKjnO8484
 
Miroslav veres -_monitorovanie_poziarov_a_dpz_-_prezentacia
Miroslav veres -_monitorovanie_poziarov_a_dpz_-_prezentaciaMiroslav veres -_monitorovanie_poziarov_a_dpz_-_prezentacia
Miroslav veres -_monitorovanie_poziarov_a_dpz_-_prezentaciaMiroslav Vereš
 

En vedette (16)

C# rocks
C# rocksC# rocks
C# rocks
 
Photography Portfolio
Photography PortfolioPhotography Portfolio
Photography Portfolio
 
Going mobile - A Technical Job Prep for Vassar Students
Going mobile - A Technical Job Prep for Vassar StudentsGoing mobile - A Technical Job Prep for Vassar Students
Going mobile - A Technical Job Prep for Vassar Students
 
Where we live in atlanta georgia usa
Where we live in atlanta georgia usaWhere we live in atlanta georgia usa
Where we live in atlanta georgia usa
 
All about me
All about meAll about me
All about me
 
Running SagePFW in a Private Cloud
Running SagePFW in a Private CloudRunning SagePFW in a Private Cloud
Running SagePFW in a Private Cloud
 
Metallic bonding
Metallic bondingMetallic bonding
Metallic bonding
 
FRx is Dead: Using SagePFW Intelligence
FRx is Dead: Using SagePFW IntelligenceFRx is Dead: Using SagePFW Intelligence
FRx is Dead: Using SagePFW Intelligence
 
Cross Platform Mobile Development with Xamarin
Cross Platform Mobile Development with XamarinCross Platform Mobile Development with Xamarin
Cross Platform Mobile Development with Xamarin
 
Cross Platform Development with Xamarin
Cross Platform Development with XamarinCross Platform Development with Xamarin
Cross Platform Development with Xamarin
 
Advanced android app lifecycle + Patterns
Advanced android app lifecycle + PatternsAdvanced android app lifecycle + Patterns
Advanced android app lifecycle + Patterns
 
Poetry Dedication Project
Poetry Dedication ProjectPoetry Dedication Project
Poetry Dedication Project
 
Cross-Platform Mobile Development in Visual Studio
Cross-Platform Mobile Development in Visual StudioCross-Platform Mobile Development in Visual Studio
Cross-Platform Mobile Development in Visual Studio
 
Vlnová analýza časových řad zesílení a expanze plantážního zemědělství v braz...
Vlnová analýza časových řad zesílení a expanze plantážního zemědělství v braz...Vlnová analýza časových řad zesílení a expanze plantážního zemědělství v braz...
Vlnová analýza časových řad zesílení a expanze plantážního zemědělství v braz...
 
Lifestyle workbook
Lifestyle workbookLifestyle workbook
Lifestyle workbook
 
Miroslav veres -_monitorovanie_poziarov_a_dpz_-_prezentacia
Miroslav veres -_monitorovanie_poziarov_a_dpz_-_prezentaciaMiroslav veres -_monitorovanie_poziarov_a_dpz_-_prezentacia
Miroslav veres -_monitorovanie_poziarov_a_dpz_-_prezentacia
 

Similaire à Datastructures asignment (20)

week-18x
week-18xweek-18x
week-18x
 
VTU Data Structures Lab Manual
VTU Data Structures Lab ManualVTU Data Structures Lab Manual
VTU Data Structures Lab Manual
 
Solutionsfor co2 C Programs for data structures
Solutionsfor co2 C Programs for data structuresSolutionsfor co2 C Programs for data structures
Solutionsfor co2 C Programs for data structures
 
week-16x
week-16xweek-16x
week-16x
 
stack.pptx
stack.pptxstack.pptx
stack.pptx
 
week-15x
week-15xweek-15x
week-15x
 
Artificial intelligence
Artificial intelligenceArtificial intelligence
Artificial intelligence
 
Qprgs
QprgsQprgs
Qprgs
 
Stack using Array
Stack using ArrayStack using Array
Stack using Array
 
Daapracticals 111105084852-phpapp02
Daapracticals 111105084852-phpapp02Daapracticals 111105084852-phpapp02
Daapracticals 111105084852-phpapp02
 
#includeiostream#includecctypeusing namespace std;cl.docx
#includeiostream#includecctypeusing namespace std;cl.docx#includeiostream#includecctypeusing namespace std;cl.docx
#includeiostream#includecctypeusing namespace std;cl.docx
 
DATA STRUCTURE USING C & C++
DATA STRUCTURE USING C & C++DATA STRUCTURE USING C & C++
DATA STRUCTURE USING C & C++
 
DSU C&C++ Practical File Diploma
DSU C&C++ Practical File DiplomaDSU C&C++ Practical File Diploma
DSU C&C++ Practical File Diploma
 
data structure and algorithm.pdf
data structure and algorithm.pdfdata structure and algorithm.pdf
data structure and algorithm.pdf
 
C basics
C basicsC basics
C basics
 
Stack array
Stack arrayStack array
Stack array
 
Programs
ProgramsPrograms
Programs
 
CS8391-Data Structures Unit 2
CS8391-Data Structures Unit 2CS8391-Data Structures Unit 2
CS8391-Data Structures Unit 2
 
DS- Stack ADT
DS- Stack ADTDS- Stack ADT
DS- Stack ADT
 
week-14x
week-14xweek-14x
week-14x
 

Dernier

Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17Celine George
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfErwinPantujan2
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfMr Bounab Samir
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxPoojaSen20
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxCarlos105
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPCeline George
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfTechSoup
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONHumphrey A Beña
 
Judging the Relevance and worth of ideas part 2.pptx
Judging the Relevance  and worth of ideas part 2.pptxJudging the Relevance  and worth of ideas part 2.pptx
Judging the Relevance and worth of ideas part 2.pptxSherlyMaeNeri
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfphamnguyenenglishnb
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptxmary850239
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management systemChristalin Nelson
 

Dernier (20)

Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdfLike-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
Like-prefer-love -hate+verb+ing & silent letters & citizenship text.pdf
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERP
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
Judging the Relevance and worth of ideas part 2.pptx
Judging the Relevance  and worth of ideas part 2.pptxJudging the Relevance  and worth of ideas part 2.pptx
Judging the Relevance and worth of ideas part 2.pptx
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management system
 

Datastructures asignment

  • 1. /* IMPLEMENTATION OF THE STACK USING ARRAYS */ /* STACK_A.C */ # include<stdio.h> # include<string.h> # include<ctype.h> #include<conio.h> # define size 3 int top = -1; int flag = 0; int stack[size]; void push(int *, int); int pop(int *); void display(int *); /* Definition of the push function */ void push(int s[], int d) { if(top ==(size-1)) flag = 0; else { flag = 1; ++top; s[top] = d; } } /* Definition of the pop function */ int pop(int s[]) { int popped_element; if(top == -1) { popped_element = 0; flag = 0; } else { flag = 1; popped_element = s[top]; --top; } return (popped_element); } /* Definition of the display function */ void display(int s[]) { int i; if(top == -1) printf("n Stack is empty"); else { for(i = top; i >= 0; --i) printf("n %d", s[i] ); } }
  • 2. /* Function main */ void main() { int data; char choice; int q = 0; int top = -1; clrscr(); do { printf(" n enter i to insert"); printf(" n enter p to delete"); printf(" n enter q to quit"); printf("n enter your choice : "); do { choice = getchar(); choice =tolower(choice); }while(strchr("ipq",choice)==NULL); switch(choice) { case 'i' : printf("n Input the element to push:"); scanf("%d", &data); push(stack, data); if(flag) { printf("n After inserting "); display(stack); if(top == (size-1)) printf("n Stack is full"); } else printf("n Stack overflow after pushing"); break; case 'p' : data = pop(stack); if(flag) { printf("n Data is popped: %d", data); printf("n Rest data in stack is as follows:n"); display(stack); } else printf("n Stack underflow" ); break; case 'q': q = 1; } } while(!q); }
  • 3. /* THIS PROGRAM DEMONSTRATES THE STACK OPERATIONS USING OOPS- CLASS STACK*/ /* cstack.cpp */ #include<iostream.h> #include<conio.h> #include<stdio.h> class stack { int stack[30]; int top,n; public: stack() { top=-1; //indicates stack is empty n=5; } void push(int); int pop(); void display(); }; void stack::push(int x) { if(top<n) { top++; stack[top]=x; } else cout<<"n the stack is full"; } int stack::pop() { int v=-99; if(top>=0) { v=stack[top]; top--; } return v; } void stack::display() { int i; if(top>=0) { for(i=top;i>=0;i--) cout<<stack[i]<<" "; } else cout<<"n stack is empty"; } void main() { stack s; char ch; int x; clrscr(); do { cout<<"n enter i to insert an element"; cout<<"n enter d to view the contents"; cout<<"n enter r to remove an element";
  • 4. cout<<"n enter q to quit"; cout<<"n enter your choice : "; cin>>ch; switch(ch) { case 'i': cout<<"n enter the value to insert"; cin>>x; s.push(x); break; case 'd': cout<<"n"; s.display(); break; case 'r': x=s.pop(); if(x==-99) cout<<"n stack is empty"; else cout<<" n the element removed is "<<x; break; } }while(ch!='q'); } OUTPUT: enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : r stack is empty enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : i enter the value to insert : 1 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : i enter the value to insert : 2 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : i enter the value to insert : -1
  • 5. enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : d -1 2 1 enter the value to insert : 2 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : i enter the value to insert : -1 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : d -1 2 1 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : r the element removed is -1 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : r the element removed is 2 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : r the element removed is 1 enter i to insert an element enter d to view the contents enter r to remove an element enter q to quit enter your choice : r stack is empty
  • 6. /*THE FOLLOWING PROGRAM CONVERTS ANY infix EXPRESSION TO POSTFIX postfix.c */ #include<iostream.h> #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<ctype.h> #include<string.h> int precedence(char op) { switch(op) { case '-':return 1; case '+':return 1; case '*':return 2; case '/':return 2; case '$':return 3; case '(':return 0; } return -1; } void push(char a[],int *top,char ch) { a[*top]=ch; (*top)++; } char pop(char a[],int *top) { *top=*top-1; return a[*top]; } void main() { int top=0,i=0,j=0,k,l,length=0; char stack[50],infix[50],postfix[50]; char ch; clrscr(); cout<<"Enter the infix expression : n"; scanf("%s",infix); length=strlen(infix); for(i=0;i<length;i++) { if(infix[i]=='(') push(stack,&top,infix[i]); if(isalpha(infix[i])) { postfix[j]=infix[i]; j++; }
  • 7. if(infix[i]==')') { while(stack[top-1]!='(') { postfix[j]=pop(stack,&top); j++; } pop(stack,&top); } if(infix[i]=='+'||infix[i]=='-'||infix[i]=='/'||infix[i]=='*'||infix[i]=='$') { if(precedence(stack[top-1])<precedence(infix[i])) push(stack,&top,infix[i]); else { while(precedence(stack[top-1])>=precedence(infix[i])) { postfix[j]=pop(stack,&top); j++; } push(stack,&top,infix[i]); } } } while(top!=0) { postfix[j]=pop(stack,&top); j++; } cout<<"nThe postfix expression is :n"; for(k=0;k<j;k++) cout<<postfix[k]; getch(); } OUTPUT: Enter the infix expression : (((X*Y-A*B)-D/F)+A)*B The postfix expression is : XY*AB*-DF/-A+B* do you want to continue (y/n) : y Enter the infix expression : A*B-P/(Q*(A-C+P*D)/B) The postfix expression is : AB*PQAC-PD*+*B//- do you want to continue (y/n) : n
  • 8. /* INSERTION AND DELETION IN A QUEUE ARRAY IMPLEMENTATION */ /* queue_a.c */ # include<stdio.h> # include<string.h> # include<ctype.h> # include<stdlib.h> # define size 5 int ch; int q[size]; int rear = 0; int front = 0; void Insert_queue(); void Delete_queue(); void Display_queue(); /* Function to create queue */ void Insert_queue() { printf("n Input the element :"); scanf("%d", &ch); if(rear < size) { rear ++; q[rear] = ch ; if(front == 0) front = 1; } else printf("n Queue is overflow"); } /* Function to perform delete operation */ void Delete_queue() { if (front == 0) { printf("n Underflow"); return ; } else { ch = q[front]; printf("n Element deleted : %d", ch); } if(front == rear) { front = 0; rear = 0; } else front = front + 1; }
  • 9. /* Output function */ void Display_queue() //char q[]) { int i; if (front == 0) return; for(i = front ; i <= rear; i++) printf(" %d ", q[i]); } /* Function main */ void main() { int k = 0; char choice; clrscr(); do { printf("nInsert->i Delete->d Quit->q:"); printf("nInput the choice : "); do { choice = getchar(); choice = tolower(choice); }while(strchr("idq",choice)==NULL); switch(choice) { case 'i' : Insert_queue(); printf("n Queue after inserting "); Display_queue(); break; case 'd' : Delete_queue(); printf("n Queue after deleting:n"); Display_queue(); break; case 'q': k = 1; } } while(!k); }
  • 10. /* THIS PROGRAM DEMONSTRATES OPERATIONS ON A CIRCULAR QUEUE USING OOPS-CLASS QUEUE –cqueue.cpp*/ #include<iostream.h> #include<conio.h> #include<stdio.h> class queue { int q[30]; //queue declaration int f,r ; int n; public: queue() //constructor { f=r=0; //indicates queue is empty n=5; } void insert(int); int delet(); void display(); }; void queue::insert(int x) { if((r+1)%n==f) cout<<"n the queue is full"; else { r=(r+1)%n; q[r]=x; } } int queue::delet() { int v=-99; if(f!=r) { f=(f+1)%n; v=q[f]; } return v; } void queue::display() { int i; if(f!=r) { i=f; while(i!=r) { i=(i+1)%n; cout<<q[i]<<" "; } } else cout<<"n queue is empty"; } void main() { queue s; char ch;int x; clrscr(); do
  • 11. { cout<<"n enter i to insert an elemnt"; cout<<"n enter d to view the contents"; cout<<"n enter r to remove an elemnt"; cout<<"n enter q to quit"; cout<<"n enter your choice : "; cin>>ch; switch(ch) { case 'i': cout<<"n enter the value to insert"; cin>>x; s.insert(x); break; case 'd': cout<<"n"; s.display(); break; case 'r': x=s.delet(); if(x==-99) cout<<"n queue is empty"; else cout<<" n the element removed is "<<x; break; } }while(ch!='q'); } OUTPUT : assume size of queue is 3 integers Insert->i Delete->d Quit->q: Input the choice : i Input the element :1 Queue after inserting 1 Insert->i Delete->d Quit->q: Input the choice : i Input the element :2 Queue after inserting 1 2 Insert->i Delete->d Quit->q: Input the choice : d Element deleted : 1 Queue after deleting: 2 Insert->i Delete->d Quit->q: Input the choice : d Element deleted : 2 Queue after deleting: queue is empty Insert->i Delete->d Quit->q: Input the choice : q
  • 12. /* THIS PROGRAM DEMONSTRATES THE CREATION OF A SIMPLE LINKED LIST INCORPORATING ALL FUNCTIONS OF INSERTION AND DELETION AT THE BEGINNING , END AND AFTER ANY PARTICULAR NODE WITH DISPLAY FEATURES */ /* LINKLIST.C */ # include <stdio.h> # include <malloc.h> struct link { int info; struct link *next; }; int i,number; struct link start, *previous, *new1; void insertiona(struct link *); void insertionb(struct link *); void create_list(struct link *); void insertione(struct link *); void display(struct link *); void delete_nodef(struct link *); void delete_node(struct link *); void delete_nodel(struct link *); /* Function to create a linked list */ void create_list(struct link *node) { char ch; start.next = NULL; /* Empty list */ node = &start; /* Point to the start of the list */ i = 0; printf("n Input choice n for break: "); ch = getchar(); while(ch != 'n') { node->next = (struct link* ) malloc(sizeof(struct link)); node = node->next; printf("n Input the node: %d: ", i+1); scanf("%d", &node->info); node->next = NULL; fflush(stdin); printf("n Input choice n for break: "); ch = getchar(); i++; } printf("n Total nodes = %d", i); } /* Inserting a node after a particular node*/ void insertiona(struct link *node) { int ins_node,x;
  • 13. node = start.next; previous = &start; printf("n Input value of the nodeafter which you want to insert:"); scanf("%d", &ins_node); while((node->info!=ins_node)&&(node!=NULL)) node=node->next; if(node!=NULL) { new1 = (struct link* ) malloc(sizeof(struct link)); printf("n enter the new value to be inserted : "); scanf(" %d",&new1->info); new1->next = node->next; node->next = new1; } else printf("n insertion is not possible"); } /* Display the list */ void display(struct link *node) { node = start.next; while (node) { printf(" %d ", node->info); node = node->next; printf(" "); } } void main() { int c; struct link *node = (struct link *) malloc(sizeof(struct link)); clrscr(); do { printf("n enter 1 to create the list"); printf("n enter 2 to insert a node at the beginning"); printf("n enter 3 to insert a node anywhere"); printf("n enter 4 to append a node "); printf("n enter 5 to display the list"); printf("n enter 6 to remove a node from beginning"); printf("n enter 7 to remove a node anywhere"); printf("n enter 8 to remove a node from the end"); printf("n enter 9 to quit"); printf("n enter your choice : "); scanf("%d",&c); switch(c) { case 1 : create_list(node); printf("n Created list is as follows:n"); display(node); break; case 2 : insertionb(node);
  • 14. break; case 3 : insertiona(node); break; case 4 : display(node); insertione(node); break; case 5 : display(node); break; case 6 : delete_nodef(node); break; case 7 : delete_node(node); break; case 8 : delete_nodel(node); break; case 9 : exit(0); } }while((c>=1)&&(c<=9)); getch(); } /* Inserting a node at the beginning*/ void insertionb(struct link *node) { node = start.next; previous = &start; new1 = (struct link* ) malloc(sizeof(struct link)); new1->next = node ; previous->next = new1; printf("n Input the fisrt node value: "); scanf("%d", &new1->info); } /* Inserting a node at the end */ void insertione(struct link *node) { node = start.next; previous = &start; if(node==NULL) { printf("n the list is empty to create return "); return; } else { while(node->next!=NULL) node = node->next; new1 = (struct link* ) malloc(sizeof(struct link)); printf("n Input the value to be inserted at the end : "); scanf(" %d",&new1->info); node->next=new1; new1->next=NULL; } } /* Removing the first node */
  • 15. void delete_nodef(struct link*node) { node = start.next; previous = &start; if (node == NULL) printf("n Under flow"); else { previous->next = node->next; free(node); } } /* Removing a node when information is known*/ void delete_node(struct link *node) { int node_number = 1; int del_node; node = start.next; previous = &start; printf("n Input information of a node you want to delete: "); scanf("%d", &del_node); while(node) { if(node->info == del_node) { printf("n Position of the information in the list is : %d", node_number); previous->next = node->next; free(node); break ; } else { node = node->next; previous = previous->next; } node_number++; } } /* Removing the last node */ void delete_nodel(struct link *node) { int node_number = 0; node = start.next; previous = &start; if (node == NULL) printf("n Underflow"); else while(node) { node = node->next; previous = previous->next; node_number ++; } node = start.next; previous = &start;
  • 16. while(node_number != 1) { node = node->next; previous = previous->next; node_number --; } if(node_number == 1) { previous->next = node->next; free(node); } }