Popular Posts

Monday, April 7, 2014

Linked List Code c++

#include "iostream"
#include "stddef.h"
using namespace std;

template <class type>
class List;

template <class type>
class Node {
public:
    type data;
    Node * next;
    Node (type d);
};

template <class type>
Node<type>::Node(type d){
    data = d;
    next = NULL;
}

template <class type>
class List{
    Node<type> * root;
public:
    List();
    bool isFull();
    bool isEmpty();
    void print();
    bool insert(type info);
    void makeEmpty();
    bool Delete(type info);
    ~List();
};

template <class type>
List<type>::List(){
    root = NULL;
}

template <class type>
List<type>::~List(){
    makeEmpty();
}

template <class type>
bool List<type>::Delete(type info){
   
    if(!isEmpty()){
        Node<type> * previous = NULL;
        Node<type> * current;
        current = root;
       
        while(current && current->data != info){
            previous = current;
            current= current->next;
        }
        if(!previous){
            root = current->next;
        }
        else
        {
            if(current){
                previous->next = current->next;
            }
            else
                return false;
        }
        delete current;
        return true;
    }
    return false;
}

template <class type>
bool List<type>::insert(type info){
   
    if(!isFull()){
        Node<type> * newNode  = new Node<type>(info);
       
        Node<type> * previous = NULL;
        Node<type> * current;
        current = root;
       
        while(current && current->data < info){
            previous = current;
            current= current->next;
        }
        if(!previous){
            newNode->next = root;
            root = newNode;
        }   
        else
        {
            newNode -> next = current;
            previous -> next = newNode;
        }
        return true;
    }
    return false;
}

template <class type>
bool List<type>::isFull(){
    Node <type> * temp = new Node<type>(1);
    if(temp){
        delete temp;
        return false;
    }
    else
        return true;
}

template <class type>
bool List<type>::isEmpty(){
    if(root)
        return false;
    else
        return true;
}

template <class type>
void List<type>::print(){
    Node <type>* current = root;
    while(current){
        cout<<current->data<<endl;
        current = current -> next;
    }
}

template <class type>
void List<type>::makeEmpty(){
    Node <type>* current = root;
    Node <type>* temp;
    while(current){
        temp = current;
        current = current -> next;
        delete temp;
    }
}
void main(){
    List<int> obj;
    char ans = 'y';
    int data;
    while(ans!='n'){
        cout<<"Enter data to insert"<<endl;
        cin>>data;
        obj.insert(data);
        cout<<endl;
        cout<<"Press n to exit"<<endl;
        cin>>ans;
       
    }
    cout<<"List:"<<endl;
    obj.print();
    ans='y';
    while(ans!='n'){
        cout<<"Enter data to delete"<<endl;
        cin>>data;
        obj.Delete(data);
        cout<<endl;
        cout<<"Press n to exit"<<endl;
        cin>>ans;
        cout<<"List:"<<endl;
        obj.print();
    }
system("PAUSE");
}

Thursday, April 3, 2014

Source code c++

Priority queue C++ using linked list (sorted)

#include<iostream>
using namespace std;

struct node
{
    int data;
    node*next;

    node()
    {
        data=-1;
        next=NULL;
    }
    node(int n,node*temp)
    {
        data=n;
        next=temp;
    }
};
class queue
{
private:
    node*head;
    node*tail;

public:
    queue()
    {
        head=NULL;
        tail=NULL;
    }
bool enque(int data);
bool deque(int&data);
bool Isempty();
};
   
bool queue:: enque(int data)
    {
    node*temp=new node();

    if(temp==NULL) // if system memory is full return false
    {
        return false;
    }

    else // if system memory is not full then enque
    {

    if(head==NULL)
        {
           
            temp->data=data;
            temp->next=NULL;
            head=temp;
           
        }
        else if(head->next==NULL)
        {
            if(head->data<data)
            {
               
                temp->data=data;
                temp->next=head;
                head=temp;
            }
            else if(head->data>data)
            {
               
                temp->data=data;
                temp->next=NULL;
                temp->next=head->next;
                head->next=temp;
           
            }
        }

        else
        {
            node*current=head;
            if(head->data<data)
            {
               
                temp->data=data;
                temp->next=NULL;
                temp->next=head;
                head=temp;
               
            }
            else
            {
                while(current->next!=NULL)
                {
                    if(current->next->data<data)
                    {
                        break;
                    }
                    current=current->next;
                }
               
                temp->data=data;
                temp->next=current->next;
                current->next=temp;
            }
        }
        return true;
    }
}

bool queue:: deque(int&data)
    {
        node*current=head;
        if(current==NULL)
        {
            return false;
        }
        else
        {
            data=current->data;
            head=current->next;
            delete current;
            return true;
        }
    }

bool queue:: Isempty()
    {
        if(head==NULL)
        {
            return false;
        }
        else
        {
            return true;
        }
    }






void main()
{
    queue q;
    int option;
    int data;
    bool temp;
    while(1)
    {
        cout<<"Enter 1 to Enter data in queue"<<endl;
        cout<<"Enter 2 to Deque data in queue"<<endl;
        cout<<"Enter 3 to deque all elements"<<endl;
        cout<<"Enter 4 to clear screen"<<endl;

        cin>>option;

        switch(option)
        {
        case 1:
            cout<<"Enter data : ";
            cin>>data;
            if(q.enque(data))
            {
            cout<<"Succesfully enqueued"<<endl;
            }
            else
            {
                cout<<"system memory is full"<<endl;
            }
            break;
       
       
        case 2:
            if(q.Isempty())
            {
            temp=q.deque(data);
            cout<<"DEQUEUED DATA IS : "<<data<<endl;
            }
            else
            {
                cout<<"queue is Empty"<<endl;
            }
            break;
       
       
        case 3:
           
            if(q.Isempty())
            {
                while(q.Isempty())
            {
            temp=q.deque(data);
            cout<<"DEQUEUED DATA IS : "<<data<<endl;
            }
            }
            else
            {
                cout<<"queue is Empty"<<endl;
            }
            break;
       
        case 4:
            system("cls");
            break;

        case 5:
            cout<<"Invalid input "<<endl;
            break;



        }
   


        }

   

}