LAPORAN TUGAS AKHIR
PRAKTIKUM STRUKTUR DATA
Oleh:
Ahmad Mulyadi
1607111863
Aldi Maulana
1607115925
Hariyo Sasongko
1607122328
Yogi Redho Sandri
1607114206
PRODI TEKNIK INFORMATIKA S1
JURUSAN TEKNIK ELEKTRO
FAKUTAS TEKNIK
UNIVERSITAS RIAU
Tugas Akhir Praktikum Struktur Data
Semester Genap Tahun Ajaran 2016-2017
Program Studi Teknik Informatika S1 Universitas Riau
Dosen Pengampu: Salhazan Nasution, S.Kom,MIT
Program Data Mahasiwa dan Daftar Hadir
1.
Listing Program#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include<windows.h> #define max 5
#define QSIZE 20
void program_linkedlist(); void program_struct (); void program_stack (); void program_queue ();
struct data_mahasiswa {
char nama[20]; char jurusan[20]; char nim[15]; char umur[5];
char mata_kuliah[10]; };
main() {
int pilihan; char ulangulang;
puts("\t\t============================================ =====");
puts("\t\tPROGRAM TUGAS AKHIR STRUKTUR DATA KELOMPOK 7 TI A");
puts("\t\t============================================ =====");
do {
printf("\n1. Program Linked List"); printf("\n2. Program Struct"); printf("\n3. Program Stack"); printf("\n4. Program Queue"); printf("\n\nPilih Program : "); scanf("%d",&pilihan);
system("cls"); switch (pilihan) {
case 1 : program_linkedlist (); break; case 2 : program_struct(); break; case 3 : program_stack (); break; case 4 : program_queue (); break;
}
printf("\n\nKembali ke Menu Pilihan Model Program? (y/t) ");
scanf("%s",&ulangulang); system("cls");
}
while ((ulangulang=='y')||(ulangulang=='Y')); printf("\n\n\nTerima Kasih\n");
}
void program_linkedlist() {
struct simpulku {
char nama[20]; int nim;
int umur;
char matakuliah[20];
struct simpulku *next_simpul; };
int main();
simpulku *simpul1, *simpul2, *simpul3, *simpul4, *simpul5, *temp;
simpul1=(simpulku *)malloc(sizeof(simpulku)); simpul2=(simpulku *)malloc(sizeof(simpulku)); simpul3=(simpulku *)malloc(sizeof(simpulku)); simpul4=(simpulku *)malloc(sizeof(simpulku));
strcpy(simpul1->nama, "Adi"); strcpy(simpul2->nama, "Aldi"); strcpy(simpul3->nama, "Hariyo"); strcpy(simpul4->nama, "Yogi");
simpul4->nim = 1607114206;
simpul1->umur=18; simpul2->umur=20; simpul3->umur=19; simpul4->umur=18;
strcpy(simpul1->matakuliah, "RPL"); strcpy(simpul2->matakuliah, "KCV"); strcpy(simpul3->matakuliah, "Jarkom"); strcpy(simpul4->matakuliah, "RPL"); simpul1->next_simpul=NULL;
puts("\t\t\t\tMENU DATA MAHASISWA");
puts("\t**********************************************
|",>nama, >nim,>umur, temp->matakuliah);
temp=temp->next_simpul;
printf("\n\t| %2s | %d | %d th | %2s
|" ,>nama, >nim,>umur, temp->matakuliah);
temp=temp->next_simpul;
printf("\n\t| %2s | %d | %d th | %2s
|",>nama, >nim,>umur, temp->matakuliah);
temp=temp->next_simpul;
printf("\n\t| %2s | %d | %d th | %2s
void program_struct () {
struct data_mahasiswa {
char nama[20]; char jurusan[20]; char nim[15]; char umur[5];
char mata_kuliah[10]; };
data_mahasiswa krw[4]; int i;
for (i=0;i<4;i++) {
printf("Silahkan Masukkan Data %d Mahasiswa Kelompok 7 \n", i+1);
printf("Nama = "); scanf("%s",krw[i].nama);
printf("Jurusan = "); scanf("%s",krw[i].jurusan); printf("NIM = "); scanf("%s",krw[i].nim);
printf("Umur = "); scanf("%s",krw[i].umur); printf("Mata Kuliah = ");
scanf("%s",krw[i].mata_kuliah); printf("\n");
}
printf("Data Mahasiswa Kelompok 7\n");
printf("\n\n---\n\n");
for (i=0;i<4;i++) {
printf("Data Mahasiswa Kelompok 7 %d \n\n",i+1);
printf("Nama : %s \n",krw[i].nama);
printf("Jurusan : %s \n",krw[i].jurusan);
printf("NIM : %s \n",krw[i].nim);
printf("Umur : %s \n",krw[i].umur);
printf("Mata Kuliah : %s
\n",krw[i].mata_kuliah); printf("\n\n"); }
getch(); }
struct stack{ int top;
int data[max]; };
stack tumpukan; void createEmpty(){
}
int isEmpty(){
if(tumpukan.top==-1) return 1;
else return 0; }
int isFull(){
if(tumpukan.top==max-1) return 1;
else return 0; }
void push(int x){
tumpukan.top=tumpukan.top+1;
void cetak(){ int i;
i=tumpukan.top; while(i!=-1) {
printf("%d \n", tumpukan.data[i]); i--;
} }
void program_stack() {
int input,pilih, tes=0,tes1=0,ke=0,da=5; while(pilih !=5)
{
system("cls");
puts("MENU DAFTAR HADIR MAHASISWA"); puts("========================"); puts("1. Cek Daftar Hadir Mahasiswa"); puts("2. Tambah Data Kehadiran"); puts("3. Kosongkan Daftar hadir");
puts("4. Lihat Daftar Hadir Mahasiswa"); puts("5. Keluar");
printf("\npilihan: "); scanf("%d", &pilih); switch(pilih)
{
case 1: if(isEmpty()==1)
puts("\nDaftar hadir masih kosong !");
puts("\nDaftar hadir sudah terisi");
else
puts("\ndafar hadir sudah penuh !");
getch(); break;
case 2: if(isFull()==1) {
puts("\nDaftar hadir sudah penuh");
printf("masukkan data: ",tes1+1);
scanf("%d",&input); push(input);
} break;
case 3: if(isEmpty()==1)
puts("\nDaftar hadir masih kosong !");
else {
printf("\ndata %d telah dokosongkan dari daftar
hadir\n",tumpukan.data[tumpukan.top]); pop(); }
getch(); break;
case 4: if(isEmpty()==1)
puts("\ndaftar hadir masih kosong !");
else {
printf("\n");
puts("isi teratas daftar hadir adalah: ");
cetak(); }
getch(); break;
case 5: puts("\nterima kasih"); break;
} }
typedef struct {
int count; int head,tail;
char names[QSIZE][20]; char jurusan[QSIZE][20]; }QUEUE;
char *enqueue(char *); char* dequeue();
void tampil();
void inisialisasi();
QUEUE *pq;
void program_queue() {
char jurusan[20]; char str[30]; int pil; QUEUE q; pq=&q;
inisialisasi();
puts ("\t\t\t\tPROGRAM ANTRIAN ");;
do {
printf("\n");
printf("| Menu & Operasi Program Tumpukan : \n"); printf("|--- \n"); printf("| 1. Input Nama dan Jurusan\n");
printf("| 2. Hapus Nama Yang Telah Selesai \n"); printf("| 3. Tampilkan data Antrian \n");
printf("| 4. Keluar \n"); printf("\nPilih Menu : "); scanf("%d",&pil);
switch(pil) {
case 1: printf("\nMasukkan Data Nama Anda : "); fflush(stdin);
gets(str);
printf("\nJurusan : "); scanf("%s",&jurusan); puts(enqueue(str)); break;
case 2: puts(dequeue()); break;
break;
case 4: goto exit;
break;
default: printf("\nInput yang dimasukkan Anda Salah!!");
}
fflush(stdin);
}
while(1);
exit :
printf("\n\n\t\t\t TERIMA KASIH \n"); }
void inisialisasi() {
pq->head = pq->tail = pq->count= 0; }
char* enqueue(char *p) {
if(pq->count==QSIZE)
return "\n\n\t\t Error: Antrian penuh"; pq->tail= (pq->tail)%QSIZE;
strcpy(pq->names[(pq->tail)++],p); pq->count++;
return "\nDataBerhasil Dimasukkan"; }
char* dequeue() {
if(pq->count==0)
return "\n\n\t\t Error: Antrian Kosong"; pq->head= (pq->head)%QSIZE;
pq->count--;
printf("\nData yang Dihapus adalah\n:"); return pq->names[(pq->head)++];
}
void tampil() {
int i=pq->head; int x=0;
if(pq->count==0)
printf("Antrian Kosong\n"); else
{
if(i==QSIZE) i%=QSIZE;
printf(" \t%s <--",pq->names[i]); printf(" \t%s <--",pq->jurusan[i]); i++;
x++; }
} }