Thursday, 24 December 2009

SINGGEL LINKED LIST NON CIRCULAR

        Ni buat teman - teman yang punya tugas STRUKTUR DATA tentang SINGGEL LINKED LIST NON CIRCULAR Ato yang biasa di siangkat SLLNC.
       Program ini menggunakan C++, dimana program yang ada di SLLNC ini , antara lain, insert depan, insert tengah, insert belakang, hapus depan, hapus tengah, hapus belakang, tampil, dan hapus semuanya,


/*********************************************************************************
* Nama Program : SINGGEL LINKED LIST NON CIRCULAR
**********************************************************************************/


#include
#include
#include
#include

typedef struct TNode
{
    int data;
    TNode *next;
    TNode *prev;
}

TNode;
TNode *head, *tail;

void init()
{
    head = NULL;
    tail = NULL;
}

int isEmpty()
{
    if(tail == NULL) return 1;
    else return 0;
}

//Insert Depan
void insertDepan (int databaru)
{
    TNode *baru;
    baru = new TNode;
    baru->data = databaru;
    baru->next = NULL;
    if(head==NULL)
    {
        head=baru;
        tail=baru;
        head->next = NULL;
        tail->next = NULL;
    }
    else
    {
        baru->next = head;
        head = baru;
    }
cout<<"Data Berasil dimasukkan, Data sekaranag adalah\n";
}

//insert tengah
void insertTengah(int value)    //penambahan data di tengah
{
    TNode *baru, *bantu, *bantu2;
    baru = new TNode;    // pembentukan node baru

    baru->data = value;     // pemberian nilai terhadap data baru
    baru->next = NULL;    // data pertama harus menunjuk ke NULL
    bantu = head;     // bantu diletakan di head dulu
    bantu2 = bantu->next;    // menghubungkan ke node setelah yang dicari
    baru->next = bantu2;     // menghubungkan node baru
    bantu->next = baru;    // menghubungkan ke node sebelum yang dicari

    cout<<"Data Berasil dimasukkan, Data sekarang adalah\n";
}


// Insert Belakang
void insertBelakang(int databaru)
{
    TNode *baru;
    baru = new TNode;
    baru->data = databaru;
    baru->next = NULL;
    if(head==NULL)
    {
        head=baru;
        tail=baru;
        head->next = NULL;
        tail->next = NULL;
    }
    else
    {
        tail->next = baru;
        tail = baru;
    }
    cout<<"Data Berasil di masukkan, Data sekarang adalah :\n";
}


// Hapus Depan
void hapusDepan()
{
    TNode *hapus;
    int d;
    if (isEmpty()==0)
    {
        if(head->next != NULL)
        {
            hapus = head;
            d = hapus->data;
            head = head->next;
            delete hapus;
        }
        else
        {
            d = head->data;
            head = NULL;
        }
        cout<<"data ("<<<") Yang terletak didepan berhasil dihapus\n";
        cout<<"Data sekarang adlah :\n";
    }
    else cout<<"Maaf Data Masih kosong\n";
}

// Hapus Tengah
void hapusTengah()
{
    TNode *hapus,*bantu,*bantu2;
    int d;
    if (isEmpty()==0)
    {
        if(head!= NULL, tail!=NULL)
        {
            bantu=head;
            hapus=head;
            {
                hapus=hapus->next;
            }
            bantu2=hapus->next;
            bantu->next=bantu2;
            d=hapus->data;
            delete hapus;
        }
        else
        {
            d = head->data;
            head = NULL;
        }
        cout<<"data ("<<<") Yang terletak ditengah berhasil dihapus\n";
        cout<<"Data sekarang adlah :\n";
    }
else cout<<"Maaf Data Masih kosong\n";
}


// Hapus Belakang
void hapusBelakang()
{
    TNode *hapus,*bantu;
    int d;
    if (isEmpty()==0)
    {
        if(head->next != NULL)
        {
            bantu=head;
            while(bantu->next->next!=NULL)
            {
                bantu=bantu->next;
            }
            hapus = bantu->next;
            d = hapus->data;
            bantu->next = NULL;
            delete hapus;
        }
        else
        {
            d = head->data;
            head = NULL;
        }
        cout<<"data ("<<<") Yang terletak dibelakang berhasil dihapus\n";
        cout<<"Data sekarang adlah :\n";
    }
    else cout<<"Maaf data masih kosong\n";
}


// Tampil
void tampil()
{
    TNode *bantu;
    bantu = head;
    if(isEmpty()==0)
    {
        while(bantu!=NULL)
        {
            cout<data<<" ";
            bantu=bantu->next;
        }
        cout<
    }
    else cout<<"Masih kosong\n\n";
}


// Clear
void clear()
{
    TNode *bantu,*hapus;
    bantu = head;
    while(bantu!=NULL)
    {
        hapus = bantu;
        bantu = bantu->next;
        delete hapus;
    }
    head = NULL;
}


void main()
{
    int data;
    int pil;
    do
    {
        cout<<"[---------MENU PILIHAN-----------]\n";
        cout<<"[ 1. masukkan data dari depan    ]\n";
        cout<<"[ 2. masukkan data dari tengah   ]\n";
        cout<<"[ 3. masukkan data dari Belakang ]\n";
        cout<<"[ 4. Hapus Data dari Depan       ]\n";
        cout<<"[ 5. Hapus Data dari tengah      ]\n";
        cout<<"[ 6. Hapus Data dari Belakang    ]\n";
        cout<<"[ 7. cetak data                  ]\n";
        cout<<"[ 8. Clear                       ]\n";
        cout<<"[ 9. Exit                        ]\n";
        cout<<"[--------------------------------]\n\n";
        cout<<"Pilihan : ";cin>>pil;
        switch(pil)
        {
            case 1: printf("Masukkan Data : ");scanf("%d",&data);
            insertDepan(data);
            tampil();
            break;


            case 2: printf("Masukkan Data : ");scanf("%d",&data);
            insertTengah(data);
            tampil();
            break;

            case 3: printf("Masukkan Data : ");scanf("%d",&data);
            insertBelakang(data);
            tampil();
            break;

            case 4:"%d",hapusDepan();
            tampil();
            break;

            case 5:"%d",hapusTengah();
            tampil();
            break;

            case 6:"%d",hapusBelakang();
            tampil();
            break;

            case 7: tampil();
            break;

            case 8: clear();
            printf("Semua Data Berasil Dihapus...\n");
            break;

            case '9': break;
            printf("terimakasih....  \n");
            break;

            default :cout<<"Maaf Pilihan anda Salah, Silahkan Pilih Ulang\n"<

        }
getch();
}
while(pil!=11);
}



selamat mencoba ya..., & jangan lupa... komentarnya............

1 comment:

Anonymous said...

maksih.. mas.. ok banget tu...