Rabu, 16 September 2020

Struktur Data Pertemuan 12 LINEAR DOUBLY LINKED LIST

 2. Akan dibuat Linked List untuk mengelola data mahasiswa dengan

struktur NIM, NAMA,NILAI. Data tersusun naik berdasarkan

NILAI.

a. Buatlah program untuk mengisikan data baru

b. Buatlah program untuk menampilkan data dengan NILAI

sama dengan 90

c. Buatlah program untuk menampilkan seluruh data

d. Buatlah program untuk menghapus data dengan NIM sama

dengan 2007140022.

e. Buatlah program untuk menghitung nilai rata-rata kelas.

 

 

#include <stdio.h>

#include <string.h>

#include <iostream>

#include <string>

using namespace std;

 

 

struct Mahasiswa

{

struct Mahasiswa *next;

char nim[10];

char nama[25];

float nilai;

};

 

 

typedef struct Mahasiswa Mhs;

 

 

Mhs* tambah_data_awal(Mhs *);

Mhs* tambah_data_urut(Mhs *);

Mhs* tambah_data_akhir(Mhs *);

void lihat_data(Mhs *);

 

 

main(void)

{

int pil;

Mhs *mhs;

 

 

mhs = NULL;

 

 

do

{

system("cls");

 

 

printf("1. Tambah Data Awal\n");

printf("2. Tambah Data Akhir\n");

printf("3. Tambah Data Urut\n");

printf("4. Lihat Data\n");

printf("5. Keluar\n\n");

 

 

printf("Masukkan Pilihan Anda : ");

scanf("%d", &pil);

 

 

switch(pil)

{

case 1 :

mhs = tambah_data_awal(mhs);

break;

case 2 :

mhs = tambah_data_akhir(mhs);

break;

case 3 :

mhs = tambah_data_urut(mhs);

break;

case 4 :

lihat_data(mhs);

break;

case 5 :

continue;

}

}

while(pil != 5);

 

 

return 0;

}

 

 

Mhs* tambah_data_awal(Mhs *mhs)

{

Mhs *mhsw;

 

 

system("cls");

 

 

mhsw = malloc(sizeof(Mhs));

mhsw->next = NULL;

 

 

fflush(stdin);

 

 

printf("Masukkan Nim   : ");

gets(mhsw->nim);

 

 

printf("Masukkan Nama  : ");

gets(mhsw->nama);

 

 

printf("Masukkan Nilai : ");

scanf("%f", &mhsw->nilai);

 

 

if(mhs == NULL)

{

mhs = mhsw;

}

else

{

mhsw->next = mhs;

}

 

 

printf("\n");

system("pause");

 

 

return mhsw;

}

 

 

Mhs* tambah_data_urut(Mhs *mhs)

{

Mhs *head;

Mhs *mhsw;

Mhs *tile;

 

 

system("cls");

 

 

head = mhs;

tile = NULL;

 

 

mhsw = malloc(sizeof(Mhs));

mhsw->next = NULL;

 

 

fflush(stdin);

 

 

printf("Masukkan Nim   : ");

gets(mhsw->nim);

 

 

printf("Masukkan Nama  : ");

gets(mhsw->nama);

 

 

printf("Masukkan Nilai : ");

scanf("%f", &mhsw->nilai);

 

 

if(mhs == NULL)

{

mhs = mhsw;

}

else

{

while(atoi(mhsw->nim) > atoi(head->nim) && head != NULL)

{

tile = head;

 

 

if(head->next != NULL)

head = head->next;

else

head->next = mhsw;

}

 

 

if(tile == NULL)

{

mhsw->next = head;

mhs = mhsw;

}

else if(atoi(mhsw->nim) < atoi(head->nim))

{

mhsw->next = head;

tile->next = mhsw;

}

}

 

 

printf("\n");

system("pause");

 

 

return mhs;

}

 

 

Mhs* tambah_data_akhir(Mhs *mhs)

{

Mhs *head;

Mhs *mhsw;

 

 

system("cls");

 

 

head = mhs;

 

 

mhsw = malloc(sizeof(Mhs));

mhsw->next = NULL;

 

 

fflush(stdin);

 

 

printf("Masukkan Nim   : ");

gets(mhsw->nim);

 

 

printf("Masukkan Nama  : ");

gets(mhsw->nama);

 

 

printf("Masukkan Nilai : ");

scanf("%f", &mhsw->nilai);

 

 

if(mhs == NULL)

{

mhs = mhsw;

}

else

{

while(head->next != NULL)

{

head = head->next;

}

 

 

head->next = mhsw;

}

 

 

printf("\n");

system("pause");

 

 

return mhs;

}

 

 

void lihat_data(Mhs *mhs)

{

system("cls");

 

 

printf("%-10s%-25s%s", "Nim", "Nama", "Nilai\n");

printf("----------------------------------------\n");

 

 

while(mhs != NULL)

{

printf("%-10s%-25s%.2f\n", mhs->nim, mhs->nama, mhs->nilai);

 

 

mhs = mhs->next;

}

 

 

printf("\n");

system("pause");

}

 










 

 

 

 

 

 

 

 

 

 

 

 

 







Readmore → Struktur Data Pertemuan 12 LINEAR DOUBLY LINKED LIST

Struktur Data Pertemuan 11 APLIKASI LINKED LIST UNTUK QUEUE

TUGAS III:

Buat program animasi Queue menggunakan Linked List tanpa Head

untuk mengelola data mahasiswa dengan struktur mahasiswa sbb :

NAMA, NIM, GENDER, NILAI STRUKTUR DATA. Program dibuat

dalam bentuk menu dengan pilihan : INSERT DATA, HAPUS DATA,

CETAK DATA, EXIT.

 

 

 

 

 

 

#include <iostream>

#include <conio.h>

#include <stdio.h>

#include <windows.h>

 

using namespace std;

 

 

int pilih; void pilihan();

 

 

struct SIMPUL{

 char nim[20];

 char nama [40];

 char gender [20];

 int info;

 float nilai;

 SIMPUL *prev, *next;

};

 

SIMPUL *data, *front=NULL, *rear=NULL,*help,*del, *q;

 

void BUAT_SIMPUL(int X)

{

data=(SIMPUL *)malloc(sizeof(SIMPUL));

if(data!=NULL)

data->info=X;

else

{

cout<<"Membuat simpul gagal";

exit(1);

}

}

 

 

void buat_data()//fungsi membuat data data

{

 data = new(SIMPUL);

 cout<<"               Masukkan Nama : ";cin>>data->nama;

 cout<<"               Masukkan NIM : ";cin>>data->nim;

 cout<<"               Masukkan Gender : ";cin>>data->gender;

 cout<<"               Masukkan Nilai : ";cin>>data->nilai;

 cout<<"\n          ==========================";

 cout<<"\n            Data telah dimasukkan   ";

 getch();

  data->prev=NULL;

 data->next=NULL;

}

 

void insert_data()

{

 buat_data();

 if(front==NULL)

 {

  front=data;

  rear=data;

  rear->next=NULL;

 }

 

 else

 {

 

  rear->next=data;

  rear=data;

  rear->next=NULL;

 }

 cout<<endl<<endl;

}

 

void hapus_data()//fungsi penghapusan data

{

 

 int hapus;

 if(front==NULL)

 {

  cout<<"              stack  kosong"<<endl;

  getch();

 }

 else

 {

  hapus=front->info;

  cout<<"              Data awal sudah dihapus";

  del = front;

  q = front->next;

  front=q;

  delete del;

  getch();

 }

 

}

 

void cetak_data()

{

 if (rear==NULL){

 cout<<"               Linked List kosong!";

 getch();

 }

 else

 {

  help=front;

  while(help!=NULL)

  {

   cout<<"             Nama : "<<help->nama<<endl;

   cout<<"             NIM : "<<help->nim<<endl;//data akan muncul dengan tampilan

   cout<<"             Gender : "<<help->gender<<endl;

   cout<<"             Nilai : "<<help->nilai<<endl;

   cout<<endl;

   help=help->next;

 

 }

getch();

 

}

}

 

 

 

 

int main()//interface monitor

{

 

 do

 {

  system("cls"); 

  cout<<"              STACK LINKED LIST WITH HEAD"<<endl;

  cout<<"              ============================="<<endl;

  cout<<"              1. INSERT DATA"<<endl;

  cout<<"              2. HAPUS DATA"<<endl;

  cout<<"              3. CETAK DATA"<<endl;

  cout<<"              4. EXIT"<<endl;

  cout<<"              ============================="<<endl;

  cout<<"              Pilihan : ";

  cin>>pilih;

  cout<<"              ============================="<<endl;

  cout<<endl;

  pilihan();

 

 

 }

 

 while(pilih!=4);

}

                void pilihan()//fungsi "pilihan" untuk pemrosesan

                {

                if(pilih==1){

                 insert_data();}

               

                else if(pilih==2)

                   hapus_data();

                  

                else if(pilih==3)

                   cetak_data();

                  

                else

                 {

                 cout<<"               Terima kasih sudah menggunakan program ini"<<endl;

                  }

                }

 














 

Readmore → Struktur Data Pertemuan 11 APLIKASI LINKED LIST UNTUK QUEUE

Struktur Data Pertemuan 10 APLIKASI LINKED LIST UNTUK STACK

 

TUGAS I:

Buat program animasi Stack menggunakan Linked List untuk mengelola data

mahasiswa dengan struktur mahasiswa sbb : NAMA, NIM, GENDER, NILAI

STRUKTUR DATA. Program dibuat dalam bentuk menu dengan pilihan : INSERT

DATA, HAPUS DATA, CETAK DATA, EXIT

 

TUGAS II :

Buat program animasi Stack menggunakan Linked List tanpa Head untuk

mengelola data mahasiswa dengan struktur mahasiswa sbb : NAMA, NIM,

GENDER, NILAI STRUKTUR DATA. Program dibuat dalam bentuk menu dengan

pilihan : INSERT DATA, HAPUS DATA, CETAK DATA, EXIT.


#include <iostream>

#include <conio.h>

#include <stdio.h>

#include <windows.h>

 

using namespace std;

 

 

int pilih; void pilihan();

 

 

struct SIMPUL{

 char nim[20];

 char nama [40];

 char gender [20];

 int info;

 float nilai;

 SIMPUL *prev, *next;

};

 

SIMPUL *data, *Dasar=NULL, *top=NULL,*help,*del, *q;

 

void BUAT_SIMPUL(int X)

{

data=(SIMPUL *)malloc(sizeof(SIMPUL));

if(data!=NULL)

data->info=X;

else

{

cout<<"Membuat simpul gagal";

exit(1);

}

}

 

void BUAT_HEAD(void)

{

if(Dasar==NULL)

{

Dasar=data;

top=Dasar;

Dasar->next=NULL;

Dasar->info=0;

}

else

{

cout<<"                Head sudah ada";

getch();

}

}

 

 

void buat_data()//fungsi membuat data data

{

 data = new(SIMPUL);

 cout<<"               Masukkan Nama : ";cin>>data->nama;

 cout<<"               Masukkan NIM : ";cin>>data->nim;

 cout<<"               Masukkan Gender : ";cin>>data->gender;

 cout<<"               Masukkan Nilai : ";cin>>data->nilai;

 cout<<"\n          ==========================";

 cout<<"\n            Data telah dimasukkan   ";

 getch();

 data->prev=NULL;

 data->next=NULL;

}

 

void insert_data()

{

 buat_data();

 if(Dasar==NULL)

 {

  Dasar=data;

  top=data;

 }

 

 else

 {

  data->next=top;

  Dasar->prev=data;

  top=data;

 }

 cout<<endl<<endl;

}

 

void hapus_data()//fungsi penghapusan data

{

 

 int hapus;

 if(top==NULL)

 {

  cout<<"              Linked List kosong, \nPenghapusan tidak dapat dilakukan"<<endl;

 }

 else

 {

  hapus=top->info;

  cout<<"              Data terakhir sudah dihapus";

  del = top;

  top = top->next;

  delete del;

  getch();

 }

 

}

 

void cetak_data()

{

 if (top==NULL){

 cout<<"               Linked List kosong!";

 getch();

 }

 else

 {

  help=Dasar;

  while(help!=NULL)

  {

   cout<<"             Nama : "<<help->nama<<endl;

   cout<<"             NIM : "<<help->nim<<endl;//data akan muncul dengan tampilan

   cout<<"             Gender : "<<help->gender<<endl;

   cout<<"             Nilai : "<<help->nilai<<endl;

   cout<<endl;

   help=help->next;

 

 }

getch();

 

}

}

 

 

 

 

int main()//interface monitor

{

 

 do

 {

  system("cls"); 

  cout<<"              STACK LINKED LIST WITH HEAD"<<endl;

  cout<<"              ============================="<<endl;

  cout<<"              1. INSERT DATA"<<endl;

  cout<<"              2. HAPUS DATA"<<endl;

  cout<<"              3. CETAK DATA"<<endl;

  cout<<"              4. EXIT"<<endl;

  cout<<"              ============================="<<endl;

  cout<<"              Pilihan : ";

  cin>>pilih;

  cout<<"              ============================="<<endl;

  cout<<endl;

  pilihan();

 

 

 }

 

 while(pilih!=4);

}

                void pilihan()//fungsi "pilihan" untuk pemrosesan

                {

                if(pilih==1){

                 insert_data();}

               

                else if(pilih==2)

                   hapus_data();

                  

                else if(pilih==3)

                   cetak_data();

                  

                else

                 {

                 cout<<"               Terima kasih sudah menggunakan program ini"<<endl;

                  }

                }






TUGAS II :

 

#include <iostream>

#include <conio.h>

#include <stdio.h>

#include <windows.h>

 

using namespace std;

 

 

int pilih; void pilihan();

 

 

struct SIMPUL{

 char nim[20];

 char nama [40];

 char gender [20];

 int info;

 float nilai;

 SIMPUL *prev, *next;

};

 

SIMPUL *data, *top=NULL,*help,*del, *q;

 

void BUAT_SIMPUL(int X)

{

data=(SIMPUL *)malloc(sizeof(SIMPUL));

if(data!=NULL)

data->info=X;

else

{

cout<<"Membuat simpul gagal";

exit(1);

}

}

 

 

 

void buat_data()//fungsi membuat data data

{

 data = new(SIMPUL);

 cout<<"               Masukkan Nama : ";cin>>data->nama;

 cout<<"               Masukkan NIM : ";cin>>data->nim;

 cout<<"               Masukkan Gender : ";cin>>data->gender;

 cout<<"               Masukkan Nilai : ";cin>>data->nilai;

 cout<<"\n          ==========================";

 cout<<"\n            Data telah dimasukkan   ";

 getch();

 data->prev=NULL;

 data->next=NULL;

}

 

void insert_data()

{

 buat_data();

 if(top==NULL)

 {

  top=data;

  top->next=NULL;

 }

 

 else

 {

  data->next=top;

  top=data;

 }

 cout<<endl<<endl;

}

 

void hapus_data()//fungsi penghapusan data

{

 

 int hapus;

 if(top==NULL)

 {

  cout<<"              Linked List kosong, \nPenghapusan tidak dapat dilakukan"<<endl;

 }

 else

 {

  hapus=top->info;

  cout<<"              Data terakhir sudah dihapus";

  del = top;

  top = top->next;

  delete del;

  getch();

 }

 

}

 

void cetak_data()

{

 if (top==NULL){

 cout<<"               Linked List kosong!";

 getch();

 }

 else

 {

  help=top;

  while(help!=NULL)

  {

   cout<<"             Nama : "<<help->nama<<endl;

   cout<<"             NIM : "<<help->nim<<endl;//data akan muncul dengan tampilan

   cout<<"             Gender : "<<help->gender<<endl;

   cout<<"             Nilai : "<<help->nilai<<endl;

   cout<<endl;

   help=help->next;

 

 }

getch();

 

}

}

 

 

 

 

int main()//interface monitor

{

 do

 {

  system("cls"); 

  cout<<"              STACK LINKED LIST WITH HEAD"<<endl;

  cout<<"              ============================="<<endl;

  cout<<"              1. INSERT DATA"<<endl;

  cout<<"              2. HAPUS DATA"<<endl;

  cout<<"              3. CETAK DATA"<<endl;

  cout<<"              4. EXIT"<<endl;

  cout<<"              ============================="<<endl;

  cout<<"              Pilihan : ";

  cin>>pilih;

  cout<<"              ============================="<<endl;

  cout<<endl;

  pilihan();

 

 

 }

 

 while(pilih!=4);

}

                void pilihan()//fungsi "pilihan" untuk pemrosesan

                {

                if(pilih==1){

                 insert_data();}

               

                else if(pilih==2)

                   hapus_data();

                  

                else if(pilih==3)

                   cetak_data();

                  

                else

                 {

                 cout<<"               Terima kasih sudah menggunakan program ini"<<endl;

                  }

                }



Readmore → Struktur Data Pertemuan 10 APLIKASI LINKED LIST UNTUK STACK

Struktur Data Pertemuan 9 LINEAR SINGLY LINKED LIST

 TUGAS

Buat program animasi Linear Singly Linked List untuk mengelola data mahasiswa dengan struktur mahasiswa sbb : NAMA, NIM, GENDER,NILAI STRUKTUR DATA. Program dibuat dalam bentuk menu dengan pilihan : INSERT DATA, HAPUS DATA, CETAK DATA, EXIT.

Ket :

INSER DATA : menyisipkan satu simpul pada akhir linked list

HAPUS DATA :menghapus satu simpul pada akhir linked list

CETAK DATA : mencetak seluruh isi linked list

 EXIT : Keluar/selesai

 

Tampilan menu :

                  LIN. SINGLY LINKED LIST

                  ==========================

1. INSERT DATA

2. HAPUS DATA

3. CETAK DATA

4. EXIT

Pilihan (1 – 4) :



#include <iostream>

#include <conio.h>

#include <stdio.h>

#include <windows.h>

using namespace std;

 

int pilih; void pilihan();

void insert_data();

void hapus_data();

void cetak_data();

struct node

{

 int nomorinduk;

 char nama [40];

 char gender [20];

 float nilai;

 node *prev, *next;

};

node *baru, *head=NULL, *tail=NULL,*help,*del;

main()//interface monitor

{

 do

 {

  system("cls");

  cout<<"\tLIN. DOUBLY LINKED LIST"<<endl;

  cout<<"\t=========================="<<endl;

  cout<<"\t1. INSERT DATA"<<endl;

  cout<<"\t2. HAPUS DATA"<<endl;

  cout<<"\t3. CETAK DATA"<<endl;

  cout<<"\t4. EXIT"<<endl;

  cout<<"\tPilihan (1 - 4) : ";

  cin>>pilih;

  cout<<endl<<endl;

  pilihan();

  cout<<"==============================="<<endl;

 }

 while(pilih!=4);

}

void pilihan()//fungsi "pilihan" untuk pemrosesan

{

 if(pilih==1)

 insert_data();

 else if(pilih==2)

 hapus_data();

 else if(pilih==3)

 cetak_data();

 else

 {

  cout<<"EXIT";

  cout<<"\nSampai Jumpa lagi"<<endl;

 }

}

void buat_baru()//fungsi membuat data baru

{

 baru = new(node);

 cout<<"Masukkan Nomor Induk : ";cin>>baru->nomorinduk;

 cout<<"Masukkan Nama : ";cin>>baru->nama;

 cout<<"Masukkan Gender : ";cin>>baru->gender;

 cout<<"Masukkan Nilai : ";cin>>baru->nilai;

 cout<<"\n\t---Data telah dimasukkan---";

 cout<<"\n\nPRESS ENTER TO CONTINUE...";

 getch();

 baru->prev=NULL;

 baru->next=NULL;

}

void insert_data()

{

 buat_baru();

 if(head==NULL)

 {

  head=baru;

  tail=baru;

 }

 else

 {

  baru->next=head;

  head->prev=baru;

  head=baru;

 }

 cout<<endl<<endl;

}

void hapus_data()//fungsi penghapusan data

{

 int hapus,nomorinduk;

 if(head==NULL)

 {

  cout<<"\nLinked List kosong, \nPenghapusan tidak dapat dilakukan"<<endl;//data yang habis maka tampilannya

 }

 else

 {

  hapus=head->nomorinduk;

  cout<<"\nData yang dihapus adalah ";//pemilihan data yang akan dihapus

  cin>>nomorinduk;

  del = head;

  head = head->next;

  delete del;

 }

}

void cetak_data()

{

 if (head==NULL)

 cout<<"\nData tidak dapat ditemukan!"<<endl;//data yang kosong

 else

 {

  help=head;

  while(help!=NULL)

  {

   cout<<" Nomor Induk : "<<help->nomorinduk;//data akan muncul dengan tampilan

   cout<<" Nama : "<<help->nama;

   cout<<" Gender : "<<help->gender;

   cout<<" Nilai : "<<help->nilai<<endl;

   help=help->next;

  }

 }

getch();

}







Readmore → Struktur Data Pertemuan 9 LINEAR SINGLY LINKED LIST