Pages

Saturday, October 30, 2010

Single Link List

Single Link List
The following C++ code will explains the implementation of Single Link List.
The following implementation is in object oriented using the SingleLinkList class and sll object. The implemented ADT functions of Single Link List are insert, print, search, modify and delete.


In SingleLinkList.h

#include <iostream>

using namespace std;

class SingleLinkList
{
public:
    struct node
    {
        int data;
        struct node *next;
    }*f, *p, *c;
    int t;

public:
    SingleLinkList()
    {
        f = new node;
        p = c = f;
        t = 0;
    }

    void Insert(int num)
    {
        if (t == 0)
        {
            c->data = num;
            c->next = NULL;
        }
        else
        {
            c = new node;
            p->next = c;
            c->data = num;
            c->next = NULL;
            p = c;
        }
        ++t;
    }

    void Print()
    {
        c = f;
        cout << "Node\tAddress\t\tData\tNext address";
        cout << "\n----\t-------\t\t----\t------------";
        for (int i = 0; i < t; ++i)
        {
            cout << "\n" << i+1 << ".\t" << c << "\t" << c->data << "\t" << c->next;
            c = c->next;
        }
    }

    void Search(int num)
    {
        c = f;
        bool flag = true;
        cout << "\nNode\tAddress\t\tData\tNext address";
        cout << "\n----\t-------\t\t----\t------------";
        for (int i = 0; i < t; ++i)
        {
            if (num == c->data)
            {
                cout << "\n" << i+1 << ".\t" << c << "\t"
                    << c->data << "\t" << c->next << endl;
                flag = false;
            }
            c = c->next;
        }
        if (flag == true)
        {
            cout << "\nYou didn't enter this number before.";
        }
    }

    void Modify(int num)
    {
        c = f;
        bool flag = true;
        for (int i = 0; i < t; ++i)
        {
            if (num == c->data)
            {
                flag = false;
                cout << "\nNumber " << num << " found at location : " << c << endl;
                cout << "Enter the number with which you want to modify: ";
                cin >> c->data;
                cout << "Number modified...\n";
            }
            c = c->next;
        }
        if (flag == true)
        {
            cout << "\nYou didn't enter this number before.\n";
        }
        Print();
    }

    void Del(int num)
    {
        p = c = f;
        bool flag = true;
        for (int i = 0; i < t; ++i)
        {
            if (num == c->data)
            {
                if (i == 0)
                {
                    flag = false;
                    f = c = c->next;
                    cout << "\nNumber " << num << " found at location : " << c << endl;
                    cout << "Number deleted...\n";
                    p = c = f;
                    --t;
                }
                else if (i == t - 1)
                {
                    flag = false;
                    c->next = NULL;
                    cout << "\nNumber " << num << " found at location : " << c << endl;
                    cout << "Number deleted...\n";
                    p = c;
                    --t;
                }
                else
                {
                    flag = false;
                    p->next = c = c->next;
                    cout << "\nNumber " << num << " found at location : " << c << endl;
                    cout << "Number deleted...\n";
                    p = c;
                    --t;
                }
            }
            if (flag == true)
                p = c;
            c = c->next;
        }
        if (flag == true)
            cout << "\n\nYou didn't enter this number before.\n";
        else if (t != 0)
            delete c;

        Print();
    }
};



In main.cpp
 
#include "SingleLinkList.h"

int main()
{
    SingleLinkList sll;

    cout << "\n~~~~~~~~~~ INSERT ~~~~~~~~~~\n";
    char ch = 'y';
    while ((ch == 'y') || (ch == 'Y'))
    {
        int k;
        cout << "\nEnter your value: ";
        cin >> k;
        sll.Insert(k);

        cout << "Do you want to insert more values: (y/n): ";
        cin >> ch;
    }

    cout << "\n\n\n~~~~~~~~~~ PRINT ~~~~~~~~~~\n";
    sll.Print();

    cout << "\n\n\n\n~~~~~~~~~~ SEARCH ~~~~~~~~~~\n";
    ch = 'y';
    while ((ch == 'y') || (ch == 'Y'))
    {
        int k;
        cout << "Enter a number to search in entered numbers: ";
        cin >> k;
        sll.Search(k);

        cout << "\nDo you want to search again: (y/n): ";
        cin >> ch;
    }

    cout << "\n\n~~~~~~~~~~ MODIFY ~~~~~~~~~~\n";
    ch = 'y';
    while ((ch == 'y') || (ch == 'Y'))
    {
        int k;
        cout << "\nEnter number to modify: ";
        cin >> k;
        sll.Modify(k);

        cout << "\nDo you want to modify any other number again: (y/n): ";
        cin >> ch;
    }

    cout << "\n\n~~~~~~~~~~ DELETE ~~~~~~~~~~\n";
    ch = 'y';
    while ((ch == 'y') || (ch == 'Y'))
    {
        int k;
        cout << "\nEnter number to delete: ";
        cin >> k;
        sll.Del(k);

        cout << "\nDo you want to delete any number again: (y/n): ";
        cin >> ch;
    }
    return 0;
}




Feel free to comment with your questions and suggestions regarding the post content...!

No comments:

Post a Comment

Your valuable comments are appreciated...!