Single Linked List - Menyimpan Data Struktur pada Node - nblognlife

Single Linked List - Menyimpan Data Struktur pada Node

Contoh Program Single Linked List - Menyimpan Data Struktur pada Node


Berikut adalah jawaban komentar pada post Single Linked List pada C++ tentang menyimpan data struktur pada node.

     Pada program di bawah ini single linked list tidak hanya menyimpan sebuah data berupa integer seperti posting sebelumnya, namun telah dimodifikasi agar data struktur yang berisi nama, kelas, nim dapat disimpan dalam sebuah node.

Untuk lebih mudah memahami syntax di bawah ini baca lagi postingan saya Struktur pada C++.
//SINGLE LINKED LIST NON CIRCULAR + MENYIMPAN DATA STRUKTUR PADA NODE
//IDE VS12 Express
//by [RS]
#include <iostream>
#include <conio.h>
#include <iomanip> //setw()
using namespace std;

struct Data_node
{
       char nama[25];
       char kelas[7];
       char nim[10];
};

struct node
{
      Data_node data;
      node* next;
};


node* _head;
node* _tail;
node* _curr;
node* _entry;
node* _del;

void inisialisasi()
{
      _head = NULL;
      _tail = NULL;
}


void input(Data_node dt)
{
      
      _entry = (node* )malloc(sizeof(node)); //alokasi memori
      _entry->data = dt//penugasan struktur
      _entry->next = NULL;
      if(_head==NULL)
      {
            _head = _entry;
            _tail = _head;
      }
      else
      {
            _tail->next = _entry;
            _tail = _entry;
      }
}

void hapus()
{
      node _simpan;
      if(_head==NULL)
      {
            cout<<"\nLinked list kosong, penghapusan tidak bisa dilakukan."<<endl;
      }
      else
      {
            _simpan.data  = _head ->data;
           cout<<"\nData yang dihapus adalah ";
cout<<_simpan.data.nama<<"/"<<_simpan.data.kelas<<"/"<<_simpan.data.nim<<endl;


            //hapus depan
            _del = _head;
            _head = _head->next;
            delete _del;
      }
}

void cetak()
{
      _curr = _head;
      if(_head == NULL)
            cout<<"\ntidak ada data dalam linked list"<<endl;
      else
      {
            cout<<"\nData yang ada dalam linked list : \n"<<endl;
            cout<<"\t";
            while(_curr!=NULL)
            {
                cout<<_curr->data.nama<<"/"<<_curr->data.kelas<<"/"<<_curr->data.nim;
                cout<<" -> ";
                _curr = _curr->next;
            }
            cout<<"NULL";
            cout<<endl;
      }
}

void menu()
{
      char pilih, ulang;
      node tmp; 

      do
      {
      fflush(stdin);
      system("cls");
      cout<<"SINGLE LINKED LIST NON CIRCULAR"<<endl;
      cout<<"-------------------------------"<<endl;
      cout<<"Menu : "<<endl;
      cout<<"1. Input data"<<endl;
      cout<<"2. Hapus data"<<endl;
      cout<<"3. Cetak Data"<<endl;
      cout<<"4. Exit"<<endl;
      cout<<"Masukkan pilihan Anda : ";
      cin>>pilih;

      switch(pilih)
      {
      case '1' :
            /*
              Pada bagian ini nilai input disimpan pada struct data 
               yang ada pada struct tmp (tmp.data).


              Kemudian tmp.data digunakan sebagai parameter untuk- 

               memanggil fungsi input()
            */
            fflush(stdin);
            cout<<"\nMasukkan nama  : ";
            cin>>tmp.data.nama;
            cout<<"Masukkan kelas : ";
            cin>>tmp.data.kelas;
            cout<<"Masukkan NIM   : ";
            cin>>tmp.data.nim;

            input(tmp.data);
            break;
      case '2' :
            hapus();
            break;
      case '3' :
            cetak();
            break;
      case '4' :
            exit(0);
            break;
      default :
            cout<<"\nPilihan salah"<<endl;
      }
      cout<<"\nKembali ke menu?(y/n)";
      cin>>ulang;
   }while(ulang=='y' || ulang=='Y');
}

int main()
{

      inisialisasi();
      menu();

      return EXIT_SUCCESS;
}

Output
1. Input Data(Joe, Rani)
SINGLE LINKED LIST NON CIRCULAR
-------------------------------
Menu :
1. Input data
2. Hapus data
3. Cetak Data
4. Exit
Masukkan pilihan Anda : 1

Masukkan nama : Joe
Masukkan kelas : C
Masukkan NIM : 110530

Kembali ke menu?(y/n)

SINGLE LINKED LIST NON CIRCULAR
-------------------------------
Menu :
1. Input data
2. Hapus data
3. Cetak Data
4. Exit
Masukkan pilihan Anda : 1

Masukkan nama : Rani
Masukkan kelas : A
Masukkan NIM : 110465

Kembali ke menu?(y/n)

2.  Mencetak Data
SINGLE LINKED LIST NON CIRCULAR
-------------------------------
Menu :
1. Input data
2. Hapus data
3. Cetak Data
4. Exit
Masukkan pilihan Anda : 3

Data yang ada dalam linked list :

        Joe/C/110530 -> Rani/A/110465 -> NULL

Kembali ke menu?(y/n)

3.  Menghapus Data
SINGLE LINKED LIST NON CIRCULAR
-------------------------------
Menu :
1. Input data
2. Hapus data
3. Cetak Data
4. Exit
Masukkan pilihan Anda : 2

Data yang dihapus adalah Joe/C/110530

Kembali ke menu?(y/n)

 4. Mencetak Ulang Data Setelah Dihapus
SINGLE LINKED LIST NON CIRCULAR
-------------------------------
Menu :
1. Input data
2. Hapus data
3. Cetak Data
4. Exit
Masukkan pilihan Anda : 3

Data yang ada dalam linked list :

        Rani/A/110465 -> NULL

Kembali ke menu?(y/n)



[RS]

Klik Like & Share jika postingan ini bermanfaat
Apa tanggapan Anda?

Berikan tanggapan Anda melalui kolom komentar yang telah disediakan.
- Gunakan bahasa yang sopan;
- Saat menjadikan postingan pada blog ini sebagai referensi, jangan lupa mencantumkan sumbernya (link dari blog ini).

Jika blog ini bermanfaat jangan lupa memberikan 'like' atau 'share' untuk mendapatkan update terbaru.

Terima kasih