Modul 3 Struktur Data: Single Linked List: Last In First Out (LIFO)

A. Deskripsi kasus

  1. Pada coding percobaan 1 akan terlihat bagaimana sistem lifo itu. Dengan struct data, dimana terdapat elemen nama, alamat, dan jabatan.
  2. Pada percobaan 2 dimana kita harus melengkapi coding tersebut sehingga dapat berjalan dengan baik. Coding tersebut digunakan untuk sebuah restoran.
  3. Pada percobaan latihan terdapat soal dimana kita membuat coding sesuai dengan soal, yaitu coding sebuah perusahaan mengenai data karyawannya.

B. Coding/ Sintaks

Percobaan 1: Deklarasi, Input, dan Menampilkan Data secara Last In First Out (LIFO)

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

struct data
{
 char nama[20];
 char alamat[20];
 char jabatan[15];
 struct data *next;
};

void main()
{
 int j=0,i,y,y1;
 char t[5];
 struct data *tampung;
 struct data *ujung;

do
 {
 ujung = (struct data *)malloc(sizeof(struct data));
 printf("Masukkan nama \t\t : "); gets((ujung->nama));
 printf("Masukkan alamat \t : "); gets((ujung->alamat));
 printf("Masukkan jabatan \t : "); gets((ujung->jabatan));


 if (j!=0)
 ujung->next=tampung;
 if(j==0)
 ujung->next=NULL;

tampung=ujung;
 printf("Ada data lagi y/t :"); gets(t);
 if (strcmp(t,"Y")==0||strcmp(t,"y")==0)
 {
 j++;
 continue;
 }
 }while ((strcmp(t,"t")!=0));

printf("Data yang dimasukkan \n");
 printf("Nama \t Alamat \t Jabatan\n");
 printf("=========================\n");

for (i=0;i<=j;i++)
 {
 printf("%s \t %s \t %s \n",ujung->nama,ujung->alamat,ujung->jabatan);
 ujung=ujung->next->next;
 }

}

Hasil :

Percobaan 2: Catatan Menu Restoran

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

struct data
{
 int nomor_meja;
 char nama_menu[30];
 int jumlah;
 int harga;
 struct data *next;
};

main()
{
 int j=0,i,y,y1;
 char t[5];
 struct data *tampung;
 struct data *ujung;

 do
 {
 ujung = (struct data *)malloc(sizeof(struct data));
 printf("Masukkan nomor meja \t : "); scanf("%d",&ujung->nomor_meja); fflush(stdin);
 printf("Masukkan nama menu \t : "); gets((ujung->nama_menu));
 printf("Masukkan jumlah \t : "); scanf("%d",&ujung->jumlah); fflush(stdin);
 printf("Masukkan harga \t\t : "); scanf("%d",&ujung->harga); fflush(stdin);


 if (j!=0)
 ujung->next=tampung;
 if(j==0)
 ujung->next=NULL;

 tampung=ujung;
 printf("Ada data lagi y/t :"); gets(t);
 if (strcmp(t,"Y")==0||strcmp(t,"y")==0)
 {
 j++;
 continue;
 }
 }while ((strcmp(t,"t")!=0));

 printf("Data yang dimasukkan \n");
 printf("Meja \t Menu \t Jumlah \t Harga\n");
 printf("===============================\n");

 for (i=0;i<=j;i++)
 {
 printf("%d \t %s \t %d \t\t %d \n",ujung->nomor_meja,ujung->nama_menu,ujung->jumlah,ujung->harga);
 ujung=ujung->next;
 }

}

Hasil :

Percobaan 3  latihan 1 : Linked List tipe LIFOLinked List

Untuk setiap nama pada node Linked List terdapat informasi Umur, Jatah Cuti, dan Jumlah Cuti yang sudah diambil.

  1.  Buatlah program yang menampung dan menampilkan informasi tersebut
  2. Tambahkan variabel sisa cuti pada setiap node yang diperoleh dari pengurangan Jatah Cuti terhadap Jumlah Cuti yang sudah diambil.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
struct data
{
 char nama[100];
 int umur,cuti,pakai,sisa;
 struct data *next;
};

void main()
{
 int j=0,i,y,y1;
 char t[5];
 struct data *tampung,*ujung;
 do
 {
 ujung=(struct data*)malloc(sizeof(struct data));
 printf("Nama \t\t:"); gets(ujung->nama);
 printf("Umur \t\t:"); scanf("%d",&ujung->umur);fflush(stdin);
 printf("Jumlah Cuti\t:"); scanf("%d",&ujung->cuti);fflush(stdin);
 printf("Cuti Terpakai\t:"); scanf("%d",&ujung->pakai);fflush(stdin);

 if(j!=0)
 ujung->next=tampung;
 else
 ujung->next=NULL;

 tampung=ujung;
 printf("Ada data lagi? (y/t)"); gets(t);
 if(strcmp(t,"Y")==0||strcmp(t,"y")==0)
 j++;
 }while(strcmp(t,"t")!=0);
 printf("Data yang dimasukkan \n\n");
 printf("nama \t umur \t jumlah cuti \t sudah terpakai\tsisa\n");
 printf("---------------------------------------------------------\n");
 for(i=0;i<=j;i++)
 {
 ujung->sisa=ujung->cuti-ujung->pakai;
 printf("%s\t%d\t%d\t\t%d\t\t%d\n",ujung->nama,ujung->umur,ujung->cuti,ujung->pakai,ujung->sisa);
 ujung=ujung->next;
 }
}

Hasil :

Pembahasan

Percobaan 1 memperkenalkan apa itu LIFO. LIFO merupakan kepanjangan dari Last in First Out, yang berarti yang terakhir masuk keluar duluan. LIFO adalah salah satu cara program menangani Stack. Selama pertanyaan “Ada data lagi?” dijawab dengan Y, maka program akan selalu membuat alokaksi memori baru.

Percobaan 2 lebih kearah melengkapi coding, dimana case study kali ini adalah restoran, dengan elemen nomor meja, nama menu, jumlah, dan harga.

Percobaan 3 diminta untuk membuat program dari awal, bukan melengkapi. Program diminta untuk menghitung jumlah cuti, yang sudah terpakai, dan sisanya. Dimana untuk menghitung sisanya, digunakanlah ujung->sisa=ujung->cuti-ujung->pakai.

Sekian laporan saya, semoga bermanfaat :hammers

Share Button

By Rinaldo Jonathan

Admin of this site. Artis papan PCB. #zoneRinaldo #Controllerism Studio Demon, Stage Angel, Sleepy Developer, Smoke free. Kalkud SHS 2012, PCR G15.

Leave a Reply

Verified by ExactMetrics