Laporan Struktur Data Modul 10 – Evaluasi

 

TUJUAN

Dosen mereview pemahaman mahasiswa tentang Array dan Struct, Single Linked List tipe LIFO dan FIFO serta Double Linked List

 

Soal 1: Array dan Struct

 

Buatlah sebuah project dengan nama Soal_1_nama_anda dan empty file Soal_1_nama_anda. Kemudian buatlah program untuk sebuah struct yang berisi:

[A] Informasi jadwal pesawat terbang. Elemen dari informasi tersebut adalah Nama Maskapai, Kode Pesawat, Tanggal Bulan Tahun Jadwal terbang, Jam dan Menit Jadwal terbang, Kota Asal, Kota Tujuan

[B] Informasi data penduduk pada suatu daerah. Elemen dari informasi tersebut adalah Nama Daerah, Kecamatan, Provinsi, Jumlah Penduduk, Rata-rata umur penduduk, Rata-rata pekerjaan penduduk

[C] Informasi sebuah berita. Elemen dari informasi tersebut adalah Tanggal, Bulan, Tahun, Judul Berita, Nama Penulis, Nama Editor.

[D] Informasi paket data internet. Elemen dari informasi tersebut adalah Nama Provider, Nama Paket, Kuota, Harga, Tanggal berlaku, Bulan berlaku, dan Tahun berlaku

[E] Informasi barang di supermarket. Elemen dari informasi tersebut adalah Nama Barang, Produsen, Kota Produksi, Kode Produk, Harga, Jumlah Stok

 

Parameter Penilaian:

  1. Program memiliki struct dengan elemen, tipe data, dan jumlah array yang benar [33]
  2. Program bisa menginputkan data struct [33]
  3. Program bisa menampilkan data struct [33]
  4. Tampilan program rapi [1]

 

 

#include 
#include 
#include 

struct penduduk
{
 char daerah[20],kec[20],prov[20],pekerjaan[20];
 int jumlah,umur;
};

main()
{
 struct penduduk a;
 char dummy[999];
 printf("Masukkan Nama Daerah \t\t: ");gets(a.daerah);
 printf("Masukkan Nama Kecamatan \t: ");gets(a.kec);
 printf("Masukkan Nama Provinsi \t\t: ");gets(a.prov);
 printf("Masukkan Jumlah Penduduk \t: ");gets(dummy);a.jumlah=atoi(dummy);
 printf("Masukkan Rata-rata umur \t: ");gets(dummy);a.umur=atoi(dummy);
 printf("Masukkan Rata-rata pekerjaan \t: ");gets(a.pekerjaan);

printf("\n\nData Penduduk\n");
 printf("====================================================================\n");
 printf("Daerah\t|Kecamatan\t|Provinsi\t|Jumlah\t|Umur\t|Pekerjaan\t|\n");
 printf("====================================================================\n");
 printf("%s\t|%s\t|%s\t\t|%d\t|%d\t|%s\n",a.daerah,a.kec,a.prov,a.jumlah,a.umur,a.pekerjaan);

}


Soal 2: Single Linked List tipe LIFO dan FIFO

 

Buatlah sebuah project dengan nama Soal_2_nama_anda dan empty file Soal_2_nama_anda. Kemudian, modifikasi hasil coding pada Soal 1 dengan menjadikannya Struct of Pointer Single Linked List yang datanya bisa ditampilkan untuk maksimal 5 node Linked List.

 

Parameter Penilaian:

  1. Isi data dituliskan dengan benar dan bisa membatasi hanya 5 node [20]
  2. Berhasil menampilkan dalam bentuk LIFO [20]
  3. Berhasil menampilkan dalam bentuk FIFO [20]
  4. Bisa melakukan proses sisip diawal untuk FIFO saja [10]
  5. Bisa melakukan proses sisip diakhir untuk FIFO saja [10]
  6. Bisa melakukan proses sisip setelah node tertentu untuk FIFO saja [10]
  7. Bisa melakukan proses hapus node untuk FIFO saja [10]
#include 
#include 
#include 

struct penduduk
{
 char daerah[20],kec[20],prov[20],pekerjaan[20];
 struct penduduk *next,*prev;
 int jumlah,umur;
};

struct penduduk *first,*backup,*buffer,*tail,*sisip;
void sisip_awal();
void sisip_akhir();
void sisip_tengah();
void delete();

main()
{

char dummy[999],t[5];
 int j=1,pilih;

first=(struct penduduk*)malloc(sizeof(struct penduduk));
 printf("Masukkan Nama Daerah \t\t: ");gets(first->daerah);
 printf("Masukkan Nama Kecamatan \t: ");gets(first->kec);
 printf("Masukkan Nama Provinsi \t\t: ");gets(first->prov);
 printf("Masukkan Jumlah Penduduk \t: ");gets(dummy);first->jumlah=atoi(dummy);
 printf("Masukkan Rata-rata umur \t: ");gets(dummy);first->umur=atoi(dummy);
 printf("Masukkan Rata-rata pekerjaan \t: ");gets(first->pekerjaan);
 first->next=NULL;
 first->prev=NULL;


 printf("Insert more data? (y/n)"); gets(t);
 puts("");
 if ((strcmp(t,"Y")==0||strcmp(t,"y")==0))
 {
 buffer=(struct penduduk*)malloc(sizeof(struct penduduk));
 first->next=buffer;
 buffer->prev=first;
 }
 else
 {
 first->next=NULL;
 }

while((strcmp(t,"Y")==0||strcmp(t,"y")==0))
 {
 j++;

printf("Masukkan Nama Daerah \t\t: ");gets(buffer->daerah);
 printf("Masukkan Nama Kecamatan \t: ");gets(buffer->kec);
 printf("Masukkan Nama Provinsi \t\t: ");gets(buffer->prov);
 printf("Masukkan Jumlah Penduduk \t: ");gets(dummy);buffer->jumlah=atoi(dummy);
 printf("Masukkan Rata-rata umur \t: ");gets(dummy);buffer->umur=atoi(dummy);
 printf("Masukkan Rata-rata pekerjaan \t: ");gets(buffer->pekerjaan);
 tail=buffer;
 tail->next=NULL;
 printf("Insert more data? (y/n)"); gets(t);
 puts("");
 if (j==5)
 {
 strcpy(t,"n");
 }
 if ((strcmp(t,"Y")==0||strcmp(t,"y")==0))
 {
 tail=(struct penduduk*)malloc(sizeof(struct penduduk));
 buffer->next=tail;
 tail->prev=buffer;
 buffer=tail;
 }

}

printf("1. Tampilkan sebagai FIFO :\n");
 printf("2. Tampilkan sebagai FILO :\n");
 printf("x. Exit\n");
 printf("Enter your choice : ");gets(dummy);pilih=atoi(dummy);
 if(pilih==1)
 {
 backup=first;
 printf("\n\nData Penduduk\n");
 printf("====================================================================\n");
 printf("Daerah\t|Kecamatan\t|Provinsi\t|Jumlah\t|Umur\t|Pekerjaan\t|\n");
 printf("====================================================================\n");
 while(backup!=NULL)
 {
 printf("%s\t|%s\t|%s\t\t|%d\t|%d\t|%s\n",backup->daerah,backup->kec,backup->prov,backup->jumlah,backup->umur,backup->pekerjaan);
 backup=backup->next;
 }
 }
 else if (pilih==2)
 {
 printf("\n\nData Penduduk\n");
 printf("====================================================================\n");
 printf("Daerah\t|Kecamatan\t|Provinsi\t|Jumlah\t|Umur\t|Pekerjaan\t|\n");
 printf("====================================================================\n");
 while(buffer!=NULL)
 {
 printf("%s\t|%s\t|%s\t\t|%d\t|%d\t|%s\n",buffer->daerah,buffer->kec,buffer->prov,buffer->jumlah,buffer->umur,buffer->pekerjaan);
 buffer=buffer->prev;
 }
 exit(0);
 }
 else
 {
 exit(0);
 }
 printf("\n\n\n");
 printf("1. Sisip di awal :\n");
 printf("2. Sisip di akhir :\n");
 printf("3. Sisip di tengah:\n");
 printf("4. Delete:\n");
 printf("x. Exit\n");
 printf("Enter your choice : ");gets(dummy);pilih=atoi(dummy);
 if(pilih==1)
 {
 sisip_awal();
 }
 else if(pilih==2)
 {
 sisip_akhir();
 }
 else if(pilih==3)
 {
 sisip_tengah();
 }
 else if(pilih==4)
 {
 delete();
 }


 printf("\n\nData Penduduk\n");
 printf("====================================================================\n");
 printf("Daerah\t|Kecamatan\t|Provinsi\t|Jumlah\t|Umur\t|Pekerjaan\t|\n");
 printf("====================================================================\n");
 while(first!=NULL)
 {
 printf("%s\t|%s\t|%s\t\t|%d\t|%d\t|%s\n",first->daerah,first->kec,first->prov,first->jumlah,first->umur,first->pekerjaan);
 first=first->next;
 }

}


void sisip_awal()
{
 char dummy[999];
 sisip=(struct penduduk*)malloc(sizeof(struct penduduk));
 printf("Masukkan Nama Daerah \t\t: ");gets(sisip->daerah);
 printf("Masukkan Nama Kecamatan \t: ");gets(sisip->kec);
 printf("Masukkan Nama Provinsi \t\t: ");gets(sisip->prov);
 printf("Masukkan Jumlah Penduduk \t: ");gets(dummy);sisip->jumlah=atoi(dummy);
 printf("Masukkan Rata-rata umur \t: ");gets(dummy);sisip->umur=atoi(dummy);
 printf("Masukkan Rata-rata pekerjaan \t: ");gets(sisip->pekerjaan);
 sisip->next=first;
 //sisip->prev=NULL;
 //first->prev=sisip;

first=sisip;

}

void sisip_akhir()
{
 char dummy[999];
 backup=first;
 sisip=(struct penduduk*)malloc(sizeof(struct penduduk));
 printf("Masukkan Nama Daerah \t\t: ");gets(sisip->daerah);
 printf("Masukkan Nama Kecamatan \t: ");gets(sisip->kec);
 printf("Masukkan Nama Provinsi \t\t: ");gets(sisip->prov);
 printf("Masukkan Jumlah Penduduk \t: ");gets(dummy);sisip->jumlah=atoi(dummy);
 printf("Masukkan Rata-rata umur \t: ");gets(dummy);sisip->umur=atoi(dummy);
 printf("Masukkan Rata-rata pekerjaan \t: ");gets(sisip->pekerjaan);
 while(backup->next!=NULL)
 {
 backup=backup->next;
 }
 backup->next=sisip;
 sisip->next=NULL;

}

void sisip_tengah()
{
 char sisip2[20],dummy[999];
 printf("Sisipkan setelah daerah : ");gets(sisip2);
 backup=first;
 sisip=(struct penduduk*)malloc(sizeof(struct penduduk));
 printf("Masukkan Nama Daerah \t\t: ");gets(sisip->daerah);
 printf("Masukkan Nama Kecamatan \t: ");gets(sisip->kec);
 printf("Masukkan Nama Provinsi \t\t: ");gets(sisip->prov);
 printf("Masukkan Jumlah Penduduk \t: ");gets(dummy);sisip->jumlah=atoi(dummy);
 printf("Masukkan Rata-rata umur \t: ");gets(dummy);sisip->umur=atoi(dummy);
 printf("Masukkan Rata-rata pekerjaan \t: ");gets(sisip->pekerjaan);
 while(backup!=NULL)
 {
 if(strcmp(sisip2,backup->daerah)==0)
 {

sisip->next=backup->next;
 backup->next=sisip;
 }
 backup=backup->next;

}
}

void delete()
{
 char hapus2[20],dummy[999];
 printf("Hapus daerah : ");gets(hapus2);
 backup=first;
 while(backup->next!=NULL)
 {
 if(strcmp(hapus2,backup->daerah)==0)
 {
 backup->prev=backup->prev->prev;
 backup->next=backup->next->next;
 free(backup);
 }
 backup=backup->next;
 }
}

Soal 3: Double Linked List

 

Buatlah sebuah project dengan nama Soal_3_nama_anda dan empty file Soal_3_nama_anda. Kemudian, modifikasi hasil coding pada Soal 2 dengan menjadikannya Struct of Pointer Double Linked List yang datanya bisa ditampilkan untuk maksimal 5 node Linked List.

 

Parameter Penilaian:

  1. Isi data dituliskan dengan benar dan bisa membatasi hanya 5 node [20]
  2. Berhasil menampilkan dalam bentuk LIFO [40]
  3. Berhasil menampilkan dalam bentuk FIFO [40]

 

Note : Secara tidak sengaja, program untuk soal 2 dan 3 jadi sama :hammer

#include 
#include 
#include 

struct penduduk
{
 char daerah[20],kec[20],prov[20],pekerjaan[20];
 struct penduduk *next,*prev;
 int jumlah,umur;
};

struct penduduk *first,*backup,*buffer,*tail,*sisip;
void sisip_awal();
void sisip_akhir();
void sisip_tengah();
void delete();

main()
{

char dummy[999],t[5];
 int j=1,pilih;

first=(struct penduduk*)malloc(sizeof(struct penduduk));
 printf("Masukkan Nama Daerah \t\t: ");gets(first->daerah);
 printf("Masukkan Nama Kecamatan \t: ");gets(first->kec);
 printf("Masukkan Nama Provinsi \t\t: ");gets(first->prov);
 printf("Masukkan Jumlah Penduduk \t: ");gets(dummy);first->jumlah=atoi(dummy);
 printf("Masukkan Rata-rata umur \t: ");gets(dummy);first->umur=atoi(dummy);
 printf("Masukkan Rata-rata pekerjaan \t: ");gets(first->pekerjaan);
 first->next=NULL;
 first->prev=NULL;


 printf("Insert more data? (y/n)"); gets(t);
 puts("");
 if ((strcmp(t,"Y")==0||strcmp(t,"y")==0))
 {
 buffer=(struct penduduk*)malloc(sizeof(struct penduduk));
 first->next=buffer;
 buffer->prev=first;
 }
 else
 {
 first->next=NULL;
 }

while((strcmp(t,"Y")==0||strcmp(t,"y")==0))
 {
 j++;

printf("Masukkan Nama Daerah \t\t: ");gets(buffer->daerah);
 printf("Masukkan Nama Kecamatan \t: ");gets(buffer->kec);
 printf("Masukkan Nama Provinsi \t\t: ");gets(buffer->prov);
 printf("Masukkan Jumlah Penduduk \t: ");gets(dummy);buffer->jumlah=atoi(dummy);
 printf("Masukkan Rata-rata umur \t: ");gets(dummy);buffer->umur=atoi(dummy);
 printf("Masukkan Rata-rata pekerjaan \t: ");gets(buffer->pekerjaan);
 tail=buffer;
 tail->next=NULL;
 printf("Insert more data? (y/n)"); gets(t);
 puts("");
 if (j==5)
 {
 strcpy(t,"n");
 }
 if ((strcmp(t,"Y")==0||strcmp(t,"y")==0))
 {
 tail=(struct penduduk*)malloc(sizeof(struct penduduk));
 buffer->next=tail;
 tail->prev=buffer;
 buffer=tail;
 }

}

printf("1. Tampilkan sebagai FIFO :\n");
 printf("2. Tampilkan sebagai FILO :\n");
 printf("x. Exit\n");
 printf("Enter your choice : ");gets(dummy);pilih=atoi(dummy);
 if(pilih==1)
 {
 backup=first;
 printf("\n\nData Penduduk\n");
 printf("====================================================================\n");
 printf("Daerah\t|Kecamatan\t|Provinsi\t|Jumlah\t|Umur\t|Pekerjaan\t|\n");
 printf("====================================================================\n");
 while(backup!=NULL)
 {
 printf("%s\t|%s\t|%s\t\t|%d\t|%d\t|%s\n",backup->daerah,backup->kec,backup->prov,backup->jumlah,backup->umur,backup->pekerjaan);
 backup=backup->next;
 }
 }
 else if (pilih==2)
 {
 printf("\n\nData Penduduk\n");
 printf("====================================================================\n");
 printf("Daerah\t|Kecamatan\t|Provinsi\t|Jumlah\t|Umur\t|Pekerjaan\t|\n");
 printf("====================================================================\n");
 while(buffer!=NULL)
 {
 printf("%s\t|%s\t|%s\t\t|%d\t|%d\t|%s\n",buffer->daerah,buffer->kec,buffer->prov,buffer->jumlah,buffer->umur,buffer->pekerjaan);
 buffer=buffer->prev;
 }
 exit(0);
 }
 else
 {
 exit(0);
 }
 printf("\n\n\n");
 printf("1. Sisip di awal :\n");
 printf("2. Sisip di akhir :\n");
 printf("3. Sisip di tengah:\n");
 printf("4. Delete:\n");
 printf("x. Exit\n");
 printf("Enter your choice : ");gets(dummy);pilih=atoi(dummy);
 if(pilih==1)
 {
 sisip_awal();
 }
 else if(pilih==2)
 {
 sisip_akhir();
 }
 else if(pilih==3)
 {
 sisip_tengah();
 }
 else if(pilih==4)
 {
 delete();
 }


 printf("\n\nData Penduduk\n");
 printf("====================================================================\n");
 printf("Daerah\t|Kecamatan\t|Provinsi\t|Jumlah\t|Umur\t|Pekerjaan\t|\n");
 printf("====================================================================\n");
 while(first!=NULL)
 {
 printf("%s\t|%s\t|%s\t\t|%d\t|%d\t|%s\n",first->daerah,first->kec,first->prov,first->jumlah,first->umur,first->pekerjaan);
 first=first->next;
 }

}


void sisip_awal()
{
 char dummy[999];
 sisip=(struct penduduk*)malloc(sizeof(struct penduduk));
 printf("Masukkan Nama Daerah \t\t: ");gets(sisip->daerah);
 printf("Masukkan Nama Kecamatan \t: ");gets(sisip->kec);
 printf("Masukkan Nama Provinsi \t\t: ");gets(sisip->prov);
 printf("Masukkan Jumlah Penduduk \t: ");gets(dummy);sisip->jumlah=atoi(dummy);
 printf("Masukkan Rata-rata umur \t: ");gets(dummy);sisip->umur=atoi(dummy);
 printf("Masukkan Rata-rata pekerjaan \t: ");gets(sisip->pekerjaan);
 sisip->next=first;
 //sisip->prev=NULL;
 //first->prev=sisip;

first=sisip;

}

void sisip_akhir()
{
 char dummy[999];
 backup=first;
 sisip=(struct penduduk*)malloc(sizeof(struct penduduk));
 printf("Masukkan Nama Daerah \t\t: ");gets(sisip->daerah);
 printf("Masukkan Nama Kecamatan \t: ");gets(sisip->kec);
 printf("Masukkan Nama Provinsi \t\t: ");gets(sisip->prov);
 printf("Masukkan Jumlah Penduduk \t: ");gets(dummy);sisip->jumlah=atoi(dummy);
 printf("Masukkan Rata-rata umur \t: ");gets(dummy);sisip->umur=atoi(dummy);
 printf("Masukkan Rata-rata pekerjaan \t: ");gets(sisip->pekerjaan);
 while(backup->next!=NULL)
 {
 backup=backup->next;
 }
 backup->next=sisip;
 sisip->next=NULL;

}

void sisip_tengah()
{
 char sisip2[20],dummy[999];
 printf("Sisipkan setelah daerah : ");gets(sisip2);
 backup=first;
 sisip=(struct penduduk*)malloc(sizeof(struct penduduk));
 printf("Masukkan Nama Daerah \t\t: ");gets(sisip->daerah);
 printf("Masukkan Nama Kecamatan \t: ");gets(sisip->kec);
 printf("Masukkan Nama Provinsi \t\t: ");gets(sisip->prov);
 printf("Masukkan Jumlah Penduduk \t: ");gets(dummy);sisip->jumlah=atoi(dummy);
 printf("Masukkan Rata-rata umur \t: ");gets(dummy);sisip->umur=atoi(dummy);
 printf("Masukkan Rata-rata pekerjaan \t: ");gets(sisip->pekerjaan);
 while(backup!=NULL)
 {
 if(strcmp(sisip2,backup->daerah)==0)
 {

sisip->next=backup->next;
 backup->next=sisip;
 }
 backup=backup->next;

}
}

void delete()
{
 char hapus2[20],dummy[999];
 printf("Hapus daerah : ");gets(hapus2);
 backup=first;
 while(backup->next!=NULL)
 {
 if(strcmp(hapus2,backup->daerah)==0)
 {
 backup->prev=backup->prev->prev;
 backup->next=backup->next->next;
 free(backup);
 }
 backup=backup->next;
 }
}

Share

Tinggalkan Balasan