Anda di halaman 1dari 30

TUGAS 03

PRAKTIKUM STRUKTUR DATA

DOSEN PENGAMPU:

Agariadne Dwinggo Samala, S.Kom., M.Pd.T

OLEH:

Nama : Ulfi Latifah


NIM : 19076075

PROGRAM STUDI PENDIDIKAN TEKNIK INFORMATIKA

JURUSAN TEKNIK ELEKTRONIKA

FAKULTAS TEKNIK

UNIVERSITAS NEGERI PADANG

2020
1. Prog1_UrutanAngka.c
a. SOURCE CODE
#include <stdio.h>
#include <stdlib.h>

//19076075-Ulfi Latifah
//Tugas 1-1
//Prak. Struktur Data #001 - TGS 3
//tgl 12 Febuari 2020
//Program.c

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

struct node *head, *second, *third, *fourth,*fifth,


*sixth=NULL;
int main(){
head=(struct node*) malloc(sizeof(struct node));
second=(struct node*) malloc(sizeof(struct node));
third=(struct node*) malloc(sizeof(struct node));
fourth=(struct node*) malloc(sizeof(struct node));
fifth=(struct node*) malloc(sizeof(struct node));
sixth=(struct node*) malloc(sizeof(struct node));

head->data=1;
head->next=second;

second->data=2;
second->next=third;

third->data=3;
third->next=fourth;
fourth->data=3;
fourth->next=fifth;

fifth->data=2;
fifth->next=sixth;

sixth->data=1;
sixth->next=NULL;

printf("%d->%d->%d->%d->%d->%d", head->data,second-
>data,third->data,fourth->data,fifth->data,sixth-
>data);
}

b. SCREENSHOT PROGRAM
c. SCREENSHOT OUTPUT

d. PENJELASAN PROGRAM
 Baris 1-2 mendeklarasikan pemanggilan package dalam bahasa c
 Baris 4-8 mendeklarasikan keterangan data mahasiswa yang membuat
program
 Baris 10-13 mendeklarasikan struct bernama node berisikan data bertipe
data integer dan node bertipe data struct dan bagian next yang menyimpan
link ke node selanjutnya
 Baris 15 mendeklarasikan struct node untuk alokasi pointer
 Baris 16-43 mendeklarasikan fungsi main merupakan fungsi pertama yang
di eksekusi oleh program
 Baris 17-22 mendeklarasikan untuk mengalokasikan node baru,
menggunakan malloc() untuk mendapatkan memori aktual, yang akan
menginisialisasikan suatu field data.
 Baris 24-40 mendeklarasikan nilai dari setiap variabel ke data lalu next
digunakan untuk menuju nilai variabel berikutnya sampai NULL
 Baris 42 mendeklarasikan fungsi printf untuk menampilkan kalimat
diantara tanda petik. %d menampilkan nilai yang tersimpan pada head-
>data,second->data,third->data,fourth->data,fifth->data,sixth->data
2. Prog2_Urutan Warna.c
a. SOURCE CODE
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<windows.h>

//19076075-Ulfi Latifah
//Tugas 1-2
//Prak. Struktur Data #002 - TGS 3
//tgl 12 Febuari 2020
//Program.c

struct color{
char color[30];
struct color *next;
};

struct color *head, *second, *third, *fourth=NULL;


int main(){
head=(struct color*) malloc(sizeof(struct color));
second=(struct color*) malloc(sizeof(struct color));
third=(struct color*) malloc(sizeof(struct color));
fourth=(struct color*) malloc(sizeof(struct color));

strcpy(head->color,"MERAH");
head->next=second;

strcpy(second->color,"KUNING");
second->next=third;

strcpy(third->color,"HIJAU");
third->next=fourth;
strcpy(fourth->color,"BIRU");
fourth->next=NULL;

system("color 7c");
printf("%s->%s->%s->%s", head->color,second-
>color,third->color,fourth->color);
}
b. SCREENSHOT PROGRAM
c. SCREENSHOT OUTPUT

d. PENJELASAN PROGRAM
 Baris 1-4 mendeklarasikan pemanggilan package dalam bahasa c
 Baris 5-10 mendeklarasikan keterangan data mahasiswa yang membuat
program
 Baris 12-15 mendeklarasikan struct bernama color berisikan color bertipe
data char dan node bertipe data struct dan bagian next yang menyimpan
link ke node selanjutnya
 Baris 17 mendeklarasikan struct node untuk alokasi pointer
 Baris 18-38 mendeklarasikan fungsi main merupakan fungsi pertama yang
di eksekusi oleh program
 Baris 19-22 mendeklarasikan untuk mengalokasikan node baru,
menggunakan malloc() untuk mendapatkan memori aktual, yang akan
menginisialisasikan suatu field data.
 Baris 24-34 mendeklarasikan nilai dari setiap variabel ke color lalu next
digunakan untuk menuju nilai variabel berikutnya sampai NULL
 Baris 36 mendeklarasikan warna background putih dengan kode 7 dan
warna text merah dengan kode c
 Baris 37 mendeklarasikan fungsi printf untuk menampilkan kalimat
diantara tanda petik. %s menampilkan nilai yang tersimpan pada head-
>color,second->color,third->color,fourth->color
3. Prog3_DataMahasiswa.c
a. SOURCE CODE
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<windows.h>

//19076075-Ulfi Latifah
//Tugas 2
//Prak. Struktur Data #003 - TGS 3
//tgl 12 Febuari 2020
//Program.c

struct mahasiswa{
char nama[25];
int umur;
int tinggi_badan;
struct mahasiswa *next;
}*head,*tail,*current;

void insertfirst(char nama[],int umur, int


tinggi_badan){
current=(struct mahasiswa*) malloc(sizeof(struct
mahasiswa));
strcpy(current->nama,nama);
current->umur=umur;
current->tinggi_badan=tinggi_badan;

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

void insertafter(char nama[],int umur, int


tinggi_badan){
current=(struct mahasiswa*) malloc(sizeof(struct
mahasiswa));
strcpy(current->nama,nama);
current->umur=umur;
current->tinggi_badan=tinggi_badan;

if(head==NULL){
head=tail=current;
}
else{
struct mahasiswa *temp=head;
temp=temp->next;
current->next=temp->next;
temp->next=current;
}
}

void insertlast(char nama[],int umur, int


tinggi_badan){
current=(struct mahasiswa*) malloc(sizeof(struct
mahasiswa));
strcpy(current->nama,nama);
current->umur=umur;
current->tinggi_badan=tinggi_badan;

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

void cetak(){
current=head;
while(current!=NULL){
printf("\nNama\t\t: %s",current->nama);
printf("\nUmur\t\t: %i",current->umur);
printf("\nTinggi Badan\t: %i\n",current-
>tinggi_badan);
current=current->next;
}
}

int main(){
printf("===DATA MAHASISWA===\n");
insertfirst("Ulfi",19,163);
insertlast("Annisa",18,153);
insertafter("Ramona",19,154);
cetak();
getchar();
return 0;
}
b. SCREENSHOT PROGRAM
c. SCREENSHOT OUTPUT

d. PENJELASAN PROGRAM
 Baris 1-4 mendeklarasikan pemanggilan package dalam bahasa c
 Baris 6-10 mendeklarasikan keterangan data mahasiswa yang membuat
program
 Baris 12-16 mendeklarasikan struct bernama Mahasiswa berisikan nama
bertipe data char array , umur dan tinggi badan bertipe data integer. Lalu
mahasiswa bertipe data struct dan bagian next yang menyimpan link ke
node selanjutnya
 Baris 17 mendeklarasikan struct node untuk alokasi pointer
 Baris 19-32 mendeklarasikan fungsi void bernama insertfirst() untuk
menambahkan node di awal. Fungsi tersebut memiliki tipe data dan
variabel: char nama[],int umur, int tinggi_badan.
 Baris 21 mendeklarasikan untuk mengalokasikan node baru, menggunakan
malloc() untuk mendapatkan memori aktual, yang akan
menginisialisasikan suatu field data.
 Baris 21-23 mendeklarasikan nilai current disimpan pada nama,umur, dan
tinggi_badan.
 Baris 25-31 mendeklarasikan fungsi percabangan if else sesuai kondisi dan
statement yang dideklarasikan
 Baris 34-49 mendeklarasikan fungsi void bernama insertafter() untuk
menambahkan node di tengah. Fungsi tersebut memiliki tipe data dan
variabel: char nama[],int umur, int tinggi_badan
 Baris 35 mendeklarasikan untuk mengalokasikan node baru, menggunakan
malloc() untuk mendapatkan memori aktual, yang akan
menginisialisasikan suatu field data.
 Baris 36-38 mendeklarasikan nilai current disimpan pada nama,umur, dan
tinggi_badan.
 Baris 40-47 mendeklarasikan fungsi percabangan if else sesuai kondisi dan
statement yang dideklarasikan
 Baris 51-65 mendeklarasikan fungsi void bernama insertlast() untuk
menambahkan node di akhir. Fungsi tersebut memiliki tipe data dan
variabel: char nama[],int umur, int tinggi_badan
 Baris 52 mendeklarasikan untuk mengalokasikan node baru, menggunakan
malloc() untuk mendapatkan memori aktual, yang akan
menginisialisasikan suatu field data.
 Baris 53-55 mendeklarasikan nilai current disimpan pada nama,umur, dan
tinggi_badan.
 Baris 57-65 mendeklarasikan fungsi percabangan if else sesuai kondisi dan
statement yang dideklarasikan
 Baris 103-145 merupakan fungsi main yang akan di eksekusi pertama
oleh program.
 Baris 67-75 mendeklarasikan fungsi void bernama cetak digunakan untuk
menampilkan data. fungsi printf menampilkan kalimat diantara tanda
petik, %s dan %i akan menampilkan data yang tersimpan pada current-
>nama, current->umur, dan current->tinggi_badan menggunakan
perulangan while.
 Baris 77-85 mendeklarasikan fungsi main merupakan fungsi pertama yang
di eksekusi oleh program
 Baris 78 mendeklarasikan fungsi printf untuk menampilkan kalimat
diantara tanda petik.
 Baris 79-81 mendeklarasikan pemanggilan fungsi insertfirst(), insertlast(),
dan insertafter(). Pemanggilan fungsi di isi nilai diantara tanda kurung
fungsi
 Baris 82 mendeklarasikan fungsi cetak untuk menampikan output
 Baris 83 mendeklarasikan penghentian fungsi yang sedang berjalan dan
melanjutkan jalannya program setelah enter
 Baris 85 mendeklarasikan return 0 untuk mengembalikan nilai main ke
nilai 0
4. Prog4_DataMahasiswa.c
a. SOURCE CODE
#include <stdio.h>
#include <stdlib.h>
#include<string.h>

//19076075-Ulfi Latifah
//Tugas 3
//Prak. Struktur Data #004 - TGS 3
//tgl 12 Febuari 2020
//Program.c

struct mahasiswa{
char nama[25];
int nim;
char jurusan[50];
int nilai_praktikum;
struct mahasiswa *next;
}*head,*tail,*current;

struct mahasiswa *head, *second, *third, *fourth=NULL;

void cetak(){
current=head;
while(current!=NULL){
printf("\nNama\t\t: %s",current->nama);
printf("\nUmur\t\t: %i",current->nim);
printf("\nJurusan\t\t: %s",current->jurusan);
printf("\nNilai Praktikum\t: %i\n",current-
>nilai_praktikum);
current=current->next;
}
}
int main(){
head=(struct mahasiswa*) malloc(sizeof(struct
mahasiswa));
second=(struct mahasiswa*) malloc(sizeof(struct
mahasiswa));
third=(struct mahasiswa*) malloc(sizeof(struct
mahasiswa));
fourth=(struct mahasiswa*) malloc(sizeof(struct
mahasiswa));

strcpy(head->nama,"Ulfi Latifah");
head->nim=19076075;
strcpy(head->jurusan,"Informatika");
head->nilai_praktikum=95;
head->next=second;

strcpy(second->nama,"M Deno Akbar");


second->nim=15137037;
strcpy(second->jurusan,"Pertambangan");
second->nilai_praktikum=98;
second->next=third;

strcpy(third->nama,"Ulfa Lutfiah");
third->nim=19029171;
strcpy(third->jurusan,"Matematika");
third->nilai_praktikum=85;
third->next=fourth;

strcpy(fourth->nama,"Dika Saputra");
fourth->nim=16060005;
strcpy(fourth->jurusan,"Ekonomi");
fourth->nilai_praktikum=87;
fourth->next=NULL;
printf("===DATA MAHASISWA===\n");
cetak();
return 0;
}
b. SCREENSHOT PROGRAM
c. SCREENSHOT OUTPUT

d. PENJELASAN PROGRAM
 Baris 1-3 mendeklarasikan pemanggilan package dalam bahasa c
 Baris 5-9 mendeklarasikan keterangan data mahasiswa yang membuat
program
 Baris 11-17 mendeklarasikan struct bernama Mahasiswa berisikan nama dan
jurusan bertipe data char array , nim dan nilai_praktikum bertipe data integer.
Lalu mahasiswa bertipe data struct dan bagian next yang menyimpan link ke
node selanjutnya
 Baris 19 mendeklarasikan struct node untuk alokasi pointer
 Baris 21-30 mendeklarasikan fungsi void bernama cetak digunakan untuk
menampilkan data. fungsi printf menampilkan kalimat diantara tanda petik,
%s dan %i akan menampilkan data yang tersimpan pada current->nama,
current->nim, current->jurusan dan current->nilai_praktikum menggunakan
perulangan while.
 Baris 32-65 mendeklarasikan fungsi main merupakan fungsi pertama yang di
eksekusi oleh program
 Baris 33-36 mendeklarasikan untuk mengalokasikan node baru, menggunakan
malloc() untuk mendapatkan memori aktual, yang akan menginisialisasikan
suatu field data.
 Baris 44-60 mendeklarasikan nilai dari setiap variabel ke data lalu next
digunakan untuk menuju nilai variabel berikutnya sampai NULL
 Baris 82 mendeklarasikan fungsi cetak untuk menampikan output
 Baris 85 mendeklarasikan return 0 untuk mengembalikan nilai main ke nilai 0
5. Prog5_DataMahasiswa.c
a. SOURCE CODE
#include <stdio.h>
#include<stdlib.h>
#include<conio.h>

//19076075-Ulfi Latifah
//Tugas 4
//Prak. Struktur Data #005 - TGS 3
//tgl 12 Febuari 2020
//Program.c

void biodata(){
printf("\t\t\t\t==================================="
);
printf("\n\t\t\t\tNama \t\t : Ulfi Latifah");
printf("\n\t\t\t\tNIM \t\t : 19076075");
printf("\n\t\t\t\tNama Program \t : Data
Mahasiswa");
printf("\n\t\t\t\t==================================
=\n");
}
typedef struct mahasiswa{
char nama[25];
int nim;
char jurusan[50];
}mahasiswa;

typedef struct node{


mahasiswa data;
struct node* next;
}node;

node *head,*tail,*current, *entry, *del;


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

void input(mahasiswa mhs){


entry=(node*)malloc(sizeof(node));

entry->data=mhs;
entry->next=NULL;
if(head==NULL){
head=entry;
tail=head;
}
else{
tail->next = entry;
tail = entry;
}
}

void hapus(){
node simpan;
if(head==NULL){
printf("\nLinked list kosong, penghapusan tidak
bisa dilakukan.");
}
else{
simpan.data = head ->data;
printf("\nData yang dihapus: : %s -> %d ->
%s\n",simpan.data.nama, simpan.data.nim,
simpan.data.jurusan);

//hapus depan
del = head;
head = head->next;
free(del);
}
}

void cetak()
{
current = head;
if(head == NULL)
printf("\ntidak ada data dalam linked
list");
else
{
printf("\nData yang ada dalam linked list :
\n");
printf("\t");
while(current!=NULL)
{
printf("%s -> %d -> %s \n", current-
>data.nama, current->data.nim, current->data.jurusan);
current = current->next;
getch();
}
printf("NULL");
}
}

int main(){
int pilih;
char z;
node tmp;

biodata();
printf("\n\n========================================
======= PROGRAM DATA MAHASISWA
==============================================");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t
PROGRAM BY ULFI LATIFAH\t\t\t\t\t");
printf("\n\t\t\t\t\t\t~ ASSALAMUALAIKUM WR.WB
~\t\t\t\t\t");
printf("\n\t\t\t\t\t\t ~ WELCOME
~\t\t\t\t\t\t\t\t\t");
getch(); system("cls");

start:
system("cls");
printf("\n==========================================
========= PILIHAN MENU
====================================================");
printf("\n1. Input Data");
printf("\n2. Hapus Data");
printf("\n3. Cetak Data");
printf("\n4. Exit");
printf("\n\nMasukkan pilihan anda : "); scanf("%i",
&pilih);

if(pilih==1)
{system("cls");

fflush(stdin);
printf("\nMasukkan Nama : "); scanf("%s",
&tmp.data.nama);fflush(stdin);
printf("Masukkan NIM : "); scanf("%i",
&tmp.data.nim);fflush(stdin);
printf("Masukkan Jurusan : "); scanf("%s",
&tmp.data.jurusan);
system("cls");input(tmp.data); goto start;}
else if(pilih==2)
{system("cls"); hapus(); goto start;}
else if(pilih==3)
{system("cls"); cetak();goto start;}
else if (pilih==4)
{system("cls"); fflush(stdin);
printf("\n\n\n\n\n\nAPAKAH ANDA YAKIN KELUAR DARI
PROGRAM?");
printf("\n[Y] [N]\n"); scanf("%c",&z);
if(z=='y'||z=='Y')
{system("cls");

printf("\n\n#####################################
PROGRAM SELESAI
######################################");}
else if(z=='n'||z=='N')
{system("cls"); goto start;}
}
else
{printf("\nPilihan salah");}

printf("\n\n\n\n\n\n\n\n\n\t\t\t\tPROGRAM BY ULFI
LATIFAH\t\t\t\t");
printf("\n\t\t\t\t~ WASSALAMUALAIKUM WR.WB
~\t\t\t\t");
printf("\n\t\t\t\t~ SEE YOU <3 ~\t\t\t\t");
}
b. SCREENSHOT PROGRAM
c. SCREENSHOT OUTPUT
d. PENJELASAN PROGRAM
 Baris 1-3 mendeklarasikan pemanggilan package dalam bahasa c
 Baris 5-9 mendeklarasikan keterangan data mahasiswa yang membuat
program
 Baris 11-17 mendeklarasikan fungsi void bernama biodata yang digunakan
untuk menampilkan data mahasiswa dan nama program
 Baris 18-21 mendeklarasikan typedef struct bernama mahasiswa berisikan
nama dan jurusan bertipe data char array , nim bertipe data integer.
 Baris 22 mendeklarasikan tipe data baru yaitu mahasiswa
 Baris 24-27 mendeklarasikan typedef struct bernama node berisikan data
bertipe data mahasiswa dan node bertipe data struct dan bagian next yang
menyimpan link ke node selanjutnya
 Baris 29 mendeklarasikan struct node untuk alokasi pointer
 Baris 31-34 mendeklarasikan fungsivoid bernama inisialisasi();
 Baris 36-49 mendeklarasikan fungsi void bernama input() untuk menginputkan
data mahasiswa. Fungsi tersebut memiliki tipe data dan variabel: mahasiswa
mhs
 Baris 37 mendeklarasikan untuk mengalokasikan node baru, menggunakan
malloc() untuk mendapatkan memori aktual, yang akan menginisialisasikan
suatu field data.
 Baris 39-40 mendeklarasikan nilai dari setiap variabel ke data lalu next
digunakan untuk menuju nilai variabel berikutnya sampai NULL
 Baris 41-48 mendeklarasikan fungsi percabangan if else sesuai kondisi dan
statement yang dideklarasikan
 Baris 51-66 mendeklarasikan fungsi void bernama hapus() untuk menghapus
data yang telah tersimpan dengan fungsi percabangan if else sesuai kondisi dan
statement yang dideklarasikan
 Baris 68-85 mendeklarasikan fungsi void bernama cetak() untuk menghapus
data yang telah tersimpan dengan fungsi percabangan if else sesuai kondisi dan
statement yang dideklarasikan
 Baris 87-136 mendeklarasikan fungsi main yang pertama kali di eksekusi
program
 Baris 53-55 mendeklarasikan nilai current disimpan pada nama,umur, dan
tinggi_badan.
 Baris 57-65 mendeklarasikan fungsi percabangan if else sesuai kondisi dan
statement yang dideklarasikan
 Baris 88-90 mendeklarasikan tipe data dan variabel: int pilih; char z;node tmp;
 Baris 17 mendeklarasikan struct array dari Mahasiswa dengan variabel mhs
 Baris 92 mendeklarasikan fungsi void bernama biodata yang digunakan untuk
menampilkan data mahasiswa dan nama program
 Baris 93-96 mendeklarasikan output kalimat diantara tanda petik oleh fungsi
printf
 Baris 97 mendeklarasikan getch() untuk menghentikan program yang sedang
berjalan. Kemudian system(“cls”) untuk membersihkan layar program yang
telah dijalankan sebelumnya sehingga yang selanjutnya tampil hanya program
pada baris selanjutnya

 Baris 27-51 mendeklarasikan fungsi void bernama input digunakan untuk


menginputkan data mahasiswa dan disimpan pada variabel struct array
menggunakan perulangan for dengan parameter tertentu disesuaikan dengan
inputan jumlah mahasiswa yang akan diinput pada baris 30. Di deklarasikan
pula fflush(stdin) untuk menulis data yang belum tertulis dari buffer ke output.
 Baris 45-50 mendeklarasikan fungsi pemilihan dengan persamaan inputan
huruf oleh user. Goto akan mengeksekusi baris yang telah diberi nama
sebelumnya yaitu tambah:
 Baris 53-74 mendeklarasikan fungsi tampildata() yang digunakan untuk
menampilkan data yang telah dieksekusi oleh fungsi input() dan disajikan
dengan tanda (==) dan (||) agar membuat tampilan seolah olah berbentuk tabel.
Fflush(stdin) juga di deklarasikan seperti sebelumnya pada fungsi input. Baris
73 mendeklarasikan getch() untuk menghentikan program yang sedang
berjalan. Kemudian system(“cls”) untuk membersihkan layar program yang
telah dijalankan sebelumnya sehingga yang selanjutnya tampil hanya program
pada baris selanjutnya
 Baris 76-87 mendeklarasikan fungsi hapusdata() yang digunakan untuk
menghapus data yang telah tersimpan sebelumnya sesuai dengan inputan user.
Setelah pengapusan data mahasiswa dieksekusi maka akan mengeksekusi
fungsi tampil data yang dipanggil pada baris 85 dan layar dibersihkan kembali
oleh system(“cls”) pada baris 86
 Baris 101-105 mendeklarasikan tampilan menu program
 Baris 106 mendeklarasikan inputan pilihan menu oleh user
 Baris 108-131 mendeklarasikan fungsi if else sesuai kondisi menu yang dipilih
 Baris 122-140 mendeklarasikan fungsi pemilihan if else dengan parameter
persamaan sesuai pilihan inputan menu oleh user. Pilihan 1 akan
mengeksekusi fungsi input(tmp.data).Pilihan 2 akan mengeksekusi fungsi
hapus().Pilihan 3 akan mengeksekusi fungsi cetak(). Setelah dieksekusi maka
akan kembali ke baris 113 bernama start: oleh goto. Pilihan 4 medeklarasikan
fungsi if else dengan parameter sesuai inputan huruf oleh user. Huruf Y atau y
akan menghentikan program dan huruf N atau n akan kembali mengesekusi
start: oleh goto. Baris 139-140 akan menampilkan kalimat kode salah dan akn
kembali mengsekusi start: oleh goto
 Baris 133-135 mendeklarasikan tampilan penutup dari program

Anda mungkin juga menyukai