This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Tampilkan postingan dengan label program linked list. Tampilkan semua postingan
Tampilkan postingan dengan label program linked list. Tampilkan semua postingan

Rabu, 01 Mei 2013

Widgets

Single Linked List

Berikut ini merupakan contoh program yang menggunakan 2 metode, yaitu :


LIFO (Last In First Out), aplikasinya : Stack (Tumpukan)
FIFO (First In First Out), aplikasinya : Queue (Antrean) 

Sourcecode :
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

struct Node
{
   int data;
   Node *next;
};

Node *head, *tail;

void headerProgram();
void menu();

void metodeLIFO();
void metodeFIFO();

void inisialisasi();
void insertData();
void removeDepan();
void removeBelakang();

void bersih();
void tampil();

void main()
{
   char pilihMetode;
   int ulangMetode = 1;

   do
   {


         headerProgram();

         cout<<"Pilih metode input data : \n";
         cout<<"\n";
         cout<<"1. LIFO (Last In First Out)  : Stack (Tumpukan)\n";
         cout<<"2. FIFO (First In First Out) : Queue (Antrian)\n";
         cout<<"3. Exit \n";
         cout<<endl;

         printf("Masukkan Pilihan Anda : ");
         pilihMetode = getche();
         printf("\n");

         switch(pilihMetode)
         {
         case '1' :
               metodeLIFO();
               break;
         case '2' :
               metodeFIFO();
               break;
         case '3' :
         exit(0);
         break;
         default :
         {
         puts("\nMaaf...Kode pilihan yang Anda masukkan Salah!!!\n");
         puts("::: Tekan sembarang tombol untuk kembali ke menu :::");
         getch();
         }
         break;
         }
   }
   while(ulangMetode == 1);
}

void headerProgram()
{
   cout<<"±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±\n";
   cout<<"±  SINGLE LINKED LIST WITH LIFO AND FIFO  ±\n";
   cout<<"±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±\n";
   cout<<endl;
}

void menu()
{
   cout<<"======== Menu :\========\n";
   cout<<"\n\n";
   cout<<"1. Insert data\n";
   cout<<"2. Remove data\n";
   cout<<"3. Print data linked list\n";
   cout<<"4. Clear data linked list\n";
   cout<<"5. Kembali ke pilihan metode\n";
   cout<<"6. Exit\n";
   cout<<endl;
}


void metodeLIFO()
{
   char pilihMenu;
   int ulang = 1;

   do
   {
         system("cls");

         headerProgram();

         cout<<"-- LIFO --\n";
         cout<<endl;

         menu();

         printf("Pilihan : ");
         pilihMenu = getche();
         printf("\n\n");

         switch(pilihMenu)
         {
         case '1' :
               insertData();
               break;
         case '2' :
               removeBelakang();
               break;
         case '3' :
               tampil();
               break;
         case '4' :
               bersih();
               break;
         case '5' :
               ulang = 0;
               break;
         case '6' :
         exit(0);
         break;
         default :
         {
         puts("Maaf... Pilihan menu yang Anda pilih Salah!\n");
         puts("::: Tekan sembarang tombol untuk kembali ke menu :::");
         getch();
         }
         break;
         }
   }
   while(ulang == 1);
}

void metodeFIFO()
{
   char pilihMenu;
   int ulang = 1;

   do
   {
         system("cls");

         headerProgram();

         cout<<"-- FIFO --\n";
         cout<<endl;

         menu();

         printf("Pilihan : ");
         pilihMenu = getche();
         printf("\n\n");

         switch(pilihMenu)
         {
         case '1' :
               insertData();
               break;
         case '2' :
               removeDepan();
               break;
         case '3' :
               tampil();
               break;
         case '4' :
               bersih();
               break;
         case '5' :
               ulang = 0;
               break;
         case '6' :
         exit(0);
         break;
         default :
         {
         puts("Maaf... Pilihan menu yang Anda Pilih Salah!\n");
         puts("::: Tekan sembarang tombol untuk kembali ke menu :::");
         getch();
         }
         break;
         }
   }
   while(ulang == 1);
}

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

void insertData()
{
   int angka;
   Node *nodeBaru;
   nodeBaru = new Node;

   cout<<"Masukkan bilangan (integer) : "; cin>>angka;

   nodeBaru->data = angka;
   nodeBaru->next = NULL;

   if(tail == NULL)
   {
         head = tail = nodeBaru;
         tail->next = NULL;
   }
   else
   {
         tail->next = nodeBaru;
         tail = nodeBaru;
   }

   printf("Data %i masuk!\n\n", angka);
   puts("::: Tekan sembarang tombol untuk kembali ke menu :::");
   getch();
}

void removeDepan()
{
   int elDel;
   Node *del;
   del = new Node;

   if(tail != NULL)
   {
         del = head;
         elDel = del->data;

         if(head == tail)
         {
               head = head->next;
               tail = head;
         }
         else
               head = head->next;

         delete del;

         printf("Data %i telah terhapus!\n\n", elDel);
   }
   else
   {
  puts("--> Linked list telah kosong! Tidak ada data yang dapat dihapus! <--\n");
   }

   puts("::: Tekan sembarang tombol untuk kembali ke menu :::");
   getch();
}

void removeBelakang()
{
   int elDel;
   Node *del, *prevTail;
   del = new Node;

   if(tail != NULL)
   {
         del = tail;
         elDel = del->data;

         if(tail == head)
         {
               inisialisasi();
         }
         else
         {
               prevTail = head;

               while(prevTail->next != tail)
                     prevTail = prevTail->next;

               tail = prevTail;
               tail->next = NULL;
         }

         delete del;

         printf("Data %i telah terhapus!\n\n", elDel);
   }
   else
   {
  puts("--> Linked list kosong! Tidak ada data yang dapat dihapus! <--\n");
   }

   puts("::: Tekan sembarang tombol untuk kembali ke menu :::");
   getch();
}

void bersih()
{
   Node *clear, *point;

   if(tail != NULL)
   {
         point = head;

         while(point != NULL)
         {
               clear = point;
               point = point->next;

               delete clear;
         }

         inisialisasi();

         puts("--> Linked list sudah dikosongkan! <--\n");
   }
   else
         puts("--> Linked list masih kosong! <--\n");

   puts("::: Tekan sembarang tombol untuk kembali ke menu :::");
   getch();
}

void tampil()
{
   Node *see;

   see = head;

   if(tail != NULL)
   {
         puts("====================================");
         puts("Data yang ada di dalam linked list :");
         puts("====================================");
         puts("");

         while(see != NULL)
         {
               printf("%i ", see->data);
               see = see->next;
         }
         puts("\n");
   }
   else
         puts("--> Linked list masih dalam keadaan kosong <--\n");

   puts("::: Tekan sembarang tombol untuk kembali ke menu :::");
   getch();
}

Printscreen Tampilan :