Showing posts with label queue. Show all posts

Queue Implementation using Linked List

Tuesday, 29 April 2014
Posted by Naveen's Blogs
  #include < iostream.h > 
  #include < conio.h > 
  #include < stdlib.h > 
  struct node 
   { 
     char name[20]; 
     int age; 
     float height; 
     node *nxt; 
   }; 
  node *start_ptr=NULL; 
  int main() 
  { 
     void push (); 
     void pop(); 
     char ch; 
     clrscr(); 
     cout<<"Queue"; 
     cout<<"-----"; 
     do 
     { 
       cout<<"Select an operation"; 
       cout<<"u->push"; 
       cout<<"o->pop"; 
       cout<<"e->exit"; 
       cin>>ch; 
       switch(ch) 
       { 
         case 'u': 
           push(); 
           break; 
         case 'o': 
           pop(); 
           break; 
         case 'e': 
           exit(0); 
       } 
     }while(ch!='e'); 
     return 0; 
  } 
  void pop() 
  { 
     node *temp1,*temp2; 
     if(start_ptr==NULL) 
       cout<<"The list is empty"; 
     else 
     { 
       temp1=start_ptr; 
       temp2=temp1; 
       while(temp1->nxt!=NULL) 
       { 
         temp2=temp1; 
         temp1=temp1->nxt; 
       } 
       if(temp1==temp2) 
       { 
         cout<< temp1->name<<","; 
         cout<< temp1->age<<", "; 
         cout<< temp1->height; 
         start_ptr=NULL; 
       } 
       else 
       { 
         cout<< temp1->name<<", "; 
         cout<< temp1->age<<", "; 
         cout<< temp1->height; 
         temp2->nxt=NULL; 
         delete temp1; 
       } 
     } 
  } 
  void push () 
   { 
     node *temp; 
     temp = new node; 
     cout << "Please enter the name of the person: "; 
     cin >> temp->name; 
     cout << "Please enter the age of the person: "; 
     cin >> temp->age; 
     cout << "Please enter the height of the person: "; 
     cin >> temp->height; 
     if (start_ptr == NULL) 
     { 
       temp->nxt=NULL; 
       start_ptr = temp; 
     } 
     else 
     { 
       temp->nxt=start_ptr; 
       start_ptr=temp; 
     } 
   }
 #include< iostream.h > 
  #include< conio.h > 
  const int MAX=5; 
  class pqueue 
  { 
      int front,rear; 
     public: 
        struct data 
        { 
          int val,p,o; 
        }d[MAX]; 
        pqueue() 
        { 
          front=rear=-1; 
        } 
        void insert(data d1); 
        data deletion(); 
        void display(); 
  }; 
  void pqueue :: insert(data d1) 
  { 
     if(rear==MAX-1) 
        cout<<"Priority Queue is Full"; 
     else 
     { 
        rear++; 
        d[rear]=d1; 
        if(front==-1) 
          front=0; 
        data temp; 
        for(int i=front;i<=rear;i++) 
          for(int j=i+1;j<=rear;j++) 
          { 
            if(d[i].p > d[j].p) 
            { 
              temp=d[i]; 
              d[i]=d[j]; 
              d[j]=temp; 
            } 
            else 
            { 
              if(d[i].p==d[j].p) 
              { 
                if(d[i].o > d[j].o) 
                { 
                  temp=d[i]; 
                  d[i]=d[j]; 
                  d[j]=temp; 
                } 
              } 
            } 
          } 
     } 
  } 
  data pqueue :: deletion() 
  { 
     data d1; 
     if(front==-1) 
        cout<<"Priority Queue is Empty"; 
     else 
     { 
        d1=d[front]; 
        if(front==rear) 
          front=rear=-1; 
        else 
          front++; 
     } 
     return d1; 
  } 
  void pqueue :: display() 
  { 
      if(front==-1) 
        cout<<"Priority Queue is Empty"; 
      else 
      { 
        for(int i=front;i<=rear;i++) 
        { 
          cout<<"Object :"<< i+1<< endl; 
          cout<<"Value ="<< d[i].val<< endl; 
          cout<<"Priority="<< d[i].p<< endl; 
          cout<<"Order = "<< d[i].o<< endl; 
        } 
      } 
  } 
  void main() 
  { 
     pqueue p1; 
     data d1; 
     char op; 
     do 
     { 
       int ch; 
       clrscr(); 
       cout<<"----------Menu-------------"; 
       cout<<" 1.Insertion 
        2.Deletion 
        3.Display 
        4.Exit"; 
       cout<<"Enter your Choice<1..4> ?"; 
       cin>>ch; 
       switch(ch) 
       { 
        case 1 : cout<<"Enter Value ?"; 
          cin>>d1.val; 
          cout<<"Enter Priority?"; 
          cin>>d1.p; 
          cout<<"Enter Order ?"; 
          cin>>d1.o; 
          p1.insert(d1); 
          break; 
        case 2 : d1=p1.deletion(); 
          cout<<"Value = "<< d1.val<< endl; 
          cout<<"Priority = "<< d1.p<< endl; 
          cout<<"Order ="<< d1.o<< endl; 
          break; 
        case 3 : p1.display(); 
          break; 
        } 
        cout<<"Do You Want to Continue < Y/N > ?"; 
        cin>>op; 
     }while(op=='Y' || op=='y'); 
     getch(); 
  }
  #include< iostream.h > 
  #include< conio.h > 
  const int MAX = 5; 
  class cqueue 
  { 
      int a[MAX],front,rear; 
     public : 
        cqueue() 
        { 
          front=rear=-1; 
       } 
       void insert(int ); 
       int deletion(); 
       void display(); 
  }; 
  void cqueue :: insert(int val) 
  { 
      if((front==0 && rear==MAX-1) || (rear+1==front)) 
        cout<<" Circular Queue is Full"; 
     else 
     { 
       if(rear==MAX-1) 
          rear=0; 
       else 
          rear++; 
       a[rear]=val; 
     } 
     if(front==-1) 
       front=0; 
  } 
  int cqueue :: deletion() 
  { 
     int k; 
     if(front==-1) 
       cout<<"Circular Queue is Empty"; 
     else 
     { 
       k=a[front]; 
       if(front==rear) 
          front=rear=-1; 
       else 
       { 
          if(front==MAX-1) 
            front=0; 
          else 
            front++; 
       } 
     } 
     return k; 
  } 
  void cqueue :: display() 
  { 
     int i; 
     if(front==-1) 
        cout<<"Circular Queue is Empty"; 
     else 
     { 
        if(rear < front) 
        { 
          for(i=front;i<=MAX-1;i++) 
            cout<< a[i] <<" "; 
          for(i=0;i<=rear;i++) 
            cout<< a[i] <<" "; 
        } 
        else 
        { 
          for(i=front;i<=rear;i++) 
            cout<< a[i]<<" "; 
          cout<< endl; 
        } 
     } 
  } 
  void main() 
  { 
     cqueue c1; 
     int ch,val; 
     char op; 
     do 
     { 
       clrscr(); 
       cout<<"-----------Menu-------------"; 
       cout<<"1.Insertion 
       2.Deletion 
       3.Display 
       4.Exit"; 
       cout<<"Enter Your Choice <1..4> ?"; 
       cin>>ch; 
       switch(ch) 
       { 
          case 1 : cout<<"Enter Element to Insert ?"; 
            cin>>val; 
            c1.insert(val); 
            break; 
          case 2 : val=c1.deletion(); 
            cout<<"Deleted Element :"<< val<< endl; 
            break; 
          case 3 : c1.display(); 
            break; 
       } 
       cout<<"Do you want to continue < Y/N > ?"; 
       cin>>op; 
     }while(op=='Y' || op=='y'); 
       getch(); 
  }
  # include < iostream.h > 
  # include < conio.h > 
  # define SIZE 20 
  class queue 
  { 
     int a[SIZE]; 
     int front; 
     int rear; 
    public: 
       queue(); 
       ~queue(); 
       void insert(int i); 
       int remove(); 
       int isempty(); 
       int isfull(); 
  }; 
  queue::queue() 
  { 
    front=0; 
    rear=0; 
  } 
  queue::~queue() 
  { 
    delete []a; 
  } 
  void queue::insert(int i) 
  { 
    if(isfull()) 
    { 
       cout<<"*Queue is FULL !!!No insertion allowed further.*"; 
       return; 
    } 
    a[rear] = i; 
    rear++; 
  } 
  int queue::remove() 
  { 
    if(isempty()) 
    { 
       cout<<"*Queue Empty !!!Value returned will be garbage.*"; 
       return (-9999); 
    } 
    return(a[front++]); 
  } 
  int queue::isempty() 
  { 
    if(front == rear) 
       return 1; 
    else 
       return 0; 
  } 
  int queue::isfull() 
  { 
    if(rear == SIZE) 
       return 1; 
    else 
       return 0; 
  } 
  void main() 
  { 
    clrscr(); 
    queue q; 
    q.insert(1); 
    q.insert(2); 
    cout<<""<< q.remove(); 
    cout<<""<< q.remove(); 
    cout<<"" << q.remove(); 
    getch(); 
  }
Welcome to My Blog

Popular Post

Blogger templates

Powered by Blogger.

- Copyright © Data Structures using C++ -Robotic- Powered by Blogger - Designed by NAVEEN KUMAR -

6