LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 216 216 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA plnt = &myVar operan sumber mengembalikan alamat memori myVar dan merupakan nilai yang diperlukan oleh variabel penunjuk. 5.4.1 Latihan praktikum Gambar 5. 1 tampilan dev C++ dan cara mulai buat program
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 217 217 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 5.5.1 Latihan 1 (pointer konstanta) Buatlah program pointer konstanta dengan cara file – new – source atau gunakan CTRL – N kemudian ketik source code program seperti dibawah ini : Berikut Flowchart pointer konstanta. Gambar 5. 2Flowchart pointer konstanta
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 218 218 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Penjelasan: Dimulai dengan terminator “mulai” dan header sebagai bentuk fungsinya . setelahnya di proses char const *nama= "Borland c++"; sehingga menampilkan cout<<"Nama Program ="<<nama<<endl; yang telah di clear , lalu sistem proses nama = "Visual C++";. lalu tampilkan cout<<"Nama Program ="<<nama<<endl dan di selesaikan dengan getch(); #include<conio.h> #include<iostream> using namespace std; main() { char const *nama="Borland C++"; system("cls"); cout<<"Nama Program="<<nama<<endl; nama=" Visual++"; cout<<"Nama Program"<<nama<<endl; getch(); }
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 219 219 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 5. 3 contoh program pointer konstanta Gambar 5. 4 hasil compile program pointer konstanta
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 220 220 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 5.5.2 Latihan 2 (Pointer Variabel) Buatlah program pointer variabel dengan cara file – new – source atau gunakan CTRL – N kemudian ketik source code program seperti dibawah ini : Berikut Flowchart pointer variabel Gambar 5. 5 Flowchart pointer variabel
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 221 221 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Penjelasan : Dimulai dengan Terminator “mulai”dan header pada umummnya. Masukan fungsi pointer int ilham, amir, *raka; dan di proses alex = 50 ;jack = alex; danu = &alex; lalu tampilkan keterangannya cout<<"Nilai Alex = "<<alex<<endl; cout<<"Nilai Jack = "<<jack<<endl; dan cout<<"Nilai Danu = "<<danu<<endl; dan di tutup dengan getch();. #include<conio.h> #include<iostream> using namespace std; main() { int Alex, Jack, *Danu; Alex= 50; Jack= Alex; Danu= &Alex; cout<<"Nilai alex="<<Alex<<endl; cout<<"Nilai jack="<<Jack<<endl; cout<<"Nilai danu="<<Danu<<endl; getch();
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 222 222 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA } Gambar 5. 6 program pointer variabel Gambar 5. 7 hasil compile pointer variable
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 223 223 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 5.6 Studi kasus 5.6.1 Operasi aritmatika pada pointer Berikut flowchart program aritmatika : Gambar 5. 8 Flowchart program aritmatika
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 224 224 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Penjelasan Flowchart : Dimulai dengan simbol terminal,mendeklarasi Int nilai [3], *penunjuk, nilai [0] = 100, nilai [1] = 200, nilai [2] = 300, penunjuk = &nilai [0] menggunakan simbol proses, lalu tampilkan nilai [1] ada di dalam memori penunjuk +1, dan nilai [2] ada di dalam penunjuk +2 menggunakan simbol input/output. Diakhiri dengan symbol terminal. Contoh code program program aritmatika seperti dibawah ini : #include<conio.h> #include<iostream> using namespace std; main() { int nilai[3], *penunjuk; nilai[0]=100; nilai[1]=200; nilai[2]=300; penunjuk=&nilai[0]; cout<<"Nilai"<<*penunjuk<<"ada di alamat memori"<<penunjuk<<endl; cout<<"Nilai"<<*(penunjuk+1)<<"ada di alamat memori"<<(penunjuk+1)<<endl;
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 225 225 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA cout<<"Nilai"<<*(penunjuk+2)<<"ada di alamat memori"<<(penunjuk+2)<<endl; getch(); } Compile dan perbaiki program sampai benar Gambar 5. 9 program operasi pointer aritmatika Gambar 5. 10 hasil compile pointer aritmatika
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 226 226 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 5.6.2 Pointer dalam array Berikut flowchart pointer dalam array: Gambar 5. 11 flowchart pointer dalam array
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 227 227 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Penjelasan Flowchart : Dimulai dengan menggunakan simbol terminal, kemudian mendeklarasi Char C[4], lalu memasukkan kondisi for (int i=0; i<4; ++i) mengunakan simbol preparation, lalu print address menggunakan simbol input/output, dan akhiri menggunakan simbol terminal. Contoh code program program aritmatika seperti dibawah ini : #include<conio.h> #include<iostream> using namespace std; main() { char c[4]; int i; for(i=0;i<4;++i) { printf("Adress of c[%d]=%x\n",i,&c[i]); } getch(); }
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 228 228 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Compile dan perbaiki program sampai benar Gambar 5. 12 program pointer dalam array Gambar 5. 13 hasil compile pointer dalam array
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 229 229 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 5.7 Kesimpulan dan Saran 5.7.1 Kesimpulan Suatu variabel yang bertipe pointer tidaklah berisi data melainkan alamat suatu data. Tipe variable pointer sama dengan tipe yang dikenal oleh variable biasa, misalnya int, float, char dan sebagainya. nama dari variabel pointer juga mengikuti ketentuan nama variable biasa. perbedaan variabel pointer dengan variable biasa yaitu penggunaan tanda asterisk (*) didepan nama varibel pada waktu deklarasi. 5.7.2 Saran Penggunaan pointer pada proses program harus benar-benar diperhatikan. Sedikit saja kesalahan dalam menggunakan pointer akan mengakibatkan kesalahan fatal pada program. Karena pointer bisa langsung menunjukan pada lokasi memori, apabila lokasi yang ditunjuk salah, berarti data yang diambil juga akan salah, dan sudah tentu program anda akan menjadi salah juga.
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 230 230 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA
BAB VI STACK OLEH Susilo Bambang Yudhoyono A.Yamani 07352211039 PROGRAM STUDI INFORMATIKA FAKULTAS TEKNIK UNIVERSITASKHAIRUN TERNATE 2023
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 232 232 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA BAB VI STACK 6.1 Pendahuluan Stack adalah suatu koleksi atau kumpulan item data yang terorganisasi dalam bentuk linear, yang operasi pemasukan dan penghapusan datanya dilakukan pada salah satu sisinya. Sedangkan pengertian stack pada struktur data adalah sebagai tumpukan dari benda, sekumpulan data yang seolah-olah diletakkan di atas data yang lain, koleksi dari objek-objek homogen, atau suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Stack merupakan bentuk khusus dari suatu data, dimana node yang ditambahkan dalam list dan diambil dari list hanya pada kepalanya, atau dengan prinsip pengolahannya adalah last-in fisrt-out (LIFO). Pada struktur ini hanya ada dua fungsi utama, yaitu push (memasukkan node ke dalam stack), dan pop (mengambil node dari stack). Secara sederhana tumpukan bisa diartikan sebagai kumpulan data yang seolaholah diletakkan di atas yang lain. Dalam suatu tumpukan akan dapat dilakukan operasi penambahan (penyisipan) dan pengambilan (penghapusan) data melalui ujung yang sama, ujung ini merupakan ujung atas tumpukkan. Sebelum struktur data tumpukkan ini digunakkan, dideklarasikan dahulu dalam kamus data. 6.2 Latihan Kegiatan Praktikum Buatlah program baru dengan cara file – new – source atau gunakan CTRL – N kemudian ketik source code program seperti dibawah ini : #include <iostream>
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 233 233 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA #define MAX 10 // latihan 1 using namespace std; struct stack { int top, data [MAX]; }Tumpukan; void init(){ Tumpukan.top = -1; } bool isempty(){ return Tumpukan.top == -1; } bool isfull(){ return Tumpukan.top == MAX -1; } void push(){ if (isfull()){ cout<<"\nTumpukan penuh" <<endl; } else { Tumpukan.top++; cout<<"\nMasukkan data ="; cin>> Tumpukan.data[Tumpukan.top];
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 234 234 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA cout<<"data"<< Tumpukan.data[Tumpukan.top] << "masuk ke stack"<<endl; } } void pop(){ if (isempty()){ cout<< "\ndata kosong\n"<<endl; } else{ cout<< "\ndata "<<Tumpukan.data [Tumpukan.top]<< "sudah terambil"<<endl; Tumpukan.top--; } } void PrintStack(){ if (isempty()){ cout<<"tTumpukan kosong"; } else{ cout<<"\nTumpukan : "; for (int i = Tumpukan.top; i >= 0; i--) cout<< Tumpukan.data[i] << ((i==0) ? "": ","); } }
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 235 235 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA int main(){ int pilihan; int(); do{ PrintStack(); cout<< "\n1.input (push)\n" << "2.hapus (Pop)\n" << "3.keluar\n" << "masukan pilihan:"; cin>>pilihan; switch (pilihan){ case 1: push(); break; case 2: pop(); break; case 3: cout << "bab 6 selesai" << endl; cout << "Nama :…………………." << endl; cout << "NPM : ………………….“<< endl; return 0; break;
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 236 236 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA default: cout << "pilihan tidak tersedia"<< endl; break; } system("cls"); }while("hoose !=3"); } Compile dan perbaiki program sampai benar : Gambar 6. 1 Struktur code latihan C++
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 237 237 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 6. 2 Lanjutan struktur code latihan C++ Gambar 6. 3 Lanjutan struktur code latihan C++
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 238 238 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 6. 4 Lanjutan struktur code latihan C++ Hasil running jika memilih pilihan pertama atau memasukan nilai ke dalam stack Gambar 6. 5 Hasil running
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 239 239 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Hasil running jika memilih pilih kedua atau menghapus data di dalam stack (tumpukan) Gambar 6. 67 Hasil running Hasil running jika memilih pilihan ke-3 atau keluar Gambar 6. 8 Hasil running
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 240 240 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 6.3. Studi kasus 6.3.1 Studi kasus 1 Buatlah program baru dengan cara file-new-source atau gunakan CTRL+N kemudian ketik source code programnya seperti di bawah ini Gambar 6. 9 Gambar 6. 10 flowchart program stack
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 241 241 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Penjelasan: Dimulai dengan terminator dan header flowchart, masukan fungsi nya didalam simbol prepation lalu fungsi untuk variabel while(1), tampilkan pilihan push, pop, display, quit dan scanf. Lalu masuk dalam system (choice) untuk case1-4 ditambahkan default jika yang lain, untuk void push, if (top (MAX-1) maka tampilkan "Stack Overflow" jika tidak, maka tampilkan nilai yang masuk dan masukan nilainya dengan nilai sudah di urutkan top top 1; stack_arr[top] = pushed item, sedangkan untuk pilihan void pop(). jika nilai (top == - 1) maka tampilkan "Stack Overflow jika buka itu maka tampilkan nilai yang dihapuskan dan diurutkan top-top-1; lalu sedangkan void display(), masukan variabel int 1, jika if(top-1) maka tampikan "Stack Overflow jika tidak, maka else (printf("InStack elements in"); untuk tampilan for top; i >0; i--) printf ("%din", stack_arr[i]); kemudian diselesaikan dengan simbol terminator. Berikut code program stack seperti dibawah ini: #include <stdio.h> #include <stdlib.h> #include <conio.h> #define MAX 5 int top = -1; int stack_arr[MAX]; void push();
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 242 242 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA void pop(); void display(); int main() { int choice; while(1) { printf("\n1.Push\n"); printf("2.Pop\n"); printf("3.Display\n"); printf("4.Quit\n\n"); printf("Enter your choice : "); scanf("%d",&choice); switch(choice) { case 1 : push();
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 243 243 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA break; case 2: pop(); break; case 3: display(); break; case 4: exit(1); default: printf("\nPILIHAN TIDAK TERSEDIA\n"); } } getch(); } void push() {
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 244 244 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA int pushed_item; if(top == (MAX - 1)) printf("Stack Overflow\n"); else { printf("\nEnter the item to be pushed in stack : "); scanf("%d",&pushed_item); top = top + 1; stack_arr[top] = pushed_item; } } void pop() { if(top == -1) printf("Stack Underflow\n"); else { printf("Popped element is : %d\n",stack_arr[top]); top = top - 1; } } void display() { int i;
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 245 245 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA if(top == -1) printf("Stack is empty\n"); else { printf("\nStack elements :\n"); for(i = top; i >=0; i--) printf("%d\n", stack_arr[i] ); }} Compile sampai benar : Gambar 6. 11 Struktur pemograman
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 246 246 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 6. 12 Lanjutan Struktur pemograman Gambar 6. 13 Lanjutan Struktur pemograman
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 247 247 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 6. 14 Lanjutan Struktur pemograman
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 248 248 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 6. 15 Hasil running
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 249 249 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 6.3.3 Studi kasus 2 Buatlah program baru dengan cara file-new-source atau gunakan CTRL+N kemudian ketik source code programnnya seperti dibawah : Gambar 6. 16 flowchart program stack
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 250 250 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Penjelasan: Dimulai dengan terminator dan header flowchart, masukan fungsinya didalam simbol prepation. Lalu fungsi untuk variabel while(1), tampilkan pilihan push, pop, display, quit dan Enter your choice. Lalu masuk dalam system (choice) untuk case 1-4 ditambahkan default jika yang lain, untuk void push, tampilkan "Enter data to be pushed (0- 999)", jika nilai (temp NULL) maka tampilkan "Memory Allocation Failed jika tidak, maka top = temp dan tampilkan "Node has been inserted at Top(Front) Successfully !!. Sedangkan untuk pilihan void pop(), jika nilai (top == NULL) maka tampilkan "Stack is empty!!" jika bukan itu maka tmp = top dan tampilkan ("Popped data: %d\n",tmp->data); lalu untuk void display0), jika top == NULL maka tampikan "Empty Stack ! jika tidak, maka temp = top dan tampilkan (Stack_In"); pada while(temp = NULL) tampilkan ("In_In"); (%4d.temp- Program dari flowchart diatas sebagai berikut >data); kemudian akhiri dengan simbol terminator Berikut code program stackseperti dibawah ini: #include<stdio.h> #include<stdlib.h> #include <conio.h> typedef struct node { int data;
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 251 251 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA struct node *link; }NODE; NODE *top = NULL; void push(); void pop(); void display(); int main() { int choice = 0; while(1) { printf("\n1.Push\n"); printf("2.Pop\n"); printf("3.Display\n"); printf("4.Quit\n\n"); printf("Enter your choice : "); scanf("%d",&choice)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 252 252 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA switch(choice) { case 1 : push(); break; case 2: pop(); break; case 3: display(); break; case 4: exit(0); default: printf("\nPILIHAN TIDAK TERSEDIA\n"); } }
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 253 253 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA getch(); } void push() { NODE *temp; int info = 0; printf("Enter data to be pushed (0-9999) : "); scanf("%d",&info); temp = (NODE *) malloc(sizeof(NODE)); if (temp == NULL) printf("\nMemory Allocation Failed"); else { temp->data = info; temp->link = top; top = temp; printf("Node has been inserted at Top(Front) Successfully !!\n");
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 254 254 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA } } void pop() { NODE *tmp; if(top == NULL) printf("Stack is empty!!\n"); else { tmp = top; printf("Popped data : %d\n",tmp->data); top = top->link; free(tmp); } } void display() { NODE *temp;
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 255 255 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA if(top == NULL) { printf("Empty Stack !!!\n"); } else { temp = top; printf("____[Stack]____\n"); while(temp != NULL) { printf("\n__\n"); printf("|%4d|",temp->data); temp = temp->link; } } } Compile sampai benar :
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 256 256 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 6. 17 Struktur pemograman Gambar 6. 18 Struktur pemograman
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 257 257 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Tampilan running : Gambar 6. 19 Hasil running Gambar 6. 20 Hasil running
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 258 258 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 6.4. Kesimpulan dan Saran 6.4.1 Kesimpulan Stack adalah suatu kolekasi atau kumpulan item data yang terorganisasi dalam bentuk urutan lineir, yang operasi pemasukan dan penghapusan datanya dilakukan pada salah satu sisinya. Keunikan pada stack adalah dimana node dan ditambahkan dalam list dan diambil dari list hanya pada kepala, dengan prinsip pengolahnya adalah last-in frist-out (LIFO). 6.4.2 Saran Laporan ini masih terdapat banyak kesalahan karena terbatasnya pengetahuan dan kekurangnya referensi materi pada laporanya ini. Diharapkan pada pembaca dapat memberikan saran sebagai motivasi pembuatan laporan selanjutnya.
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 259 259 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA
BAB VII QUEUE OLEH Susilo Bambang Yudhoyono A.Yamani 07352211039 PROGRAM STUDI INFORMATIKA FAKULTAS TEKNIK UNIVERSITASKHAIRUN TERNATE 2023
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 301 301 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA BAB VII QUEUE 7.1 Definis Queue (Antri) Queue atau antrian merupakan kumpulan elemen yang pengisian dan penghapusan elemen yang dilakukan dari sisi atau gerbang yang berbeda beda. Pengisian dilakukan dari gerbang belakang dan penghapusan gerbang depan. Hal ini menunjukan bahwa untuk queue mempunyai dua gerbang yaitu gerbang depan dan belakang. Dengan demikian dapat dlihat bahwa queue mempunyai sifat FIFO ( Frist in, Frist out ), yaitu elemen yang pertama masuk akan keluar pertama juga. Represnatsi queue dapat deklarasi dengan menggunakan array atau linked list resresntasi queue dengan array atau linkedlist. Representasi queue dengan array ada penunjuk depan dan belakang yang digunakan untuk menunjuk elemen posisi depan dan elemen posisi belakang. Sehingga dapat diketahui queue kosong atau tidak. Queue dapat ditambah selama belakang tidak sama dengan isi dan maksimum array. Operasi penyisipan elemen queue digunakan untuk mengambil atau menghapus elemen dan suatu queue. Operasi penghapusan elemen pada circular yang dihapus adalah selalu yang berada didepan sehingga penunjuk depan akan naik satu (depan + 1 ) jika depan lebih kecil dari maksimum elemen array . tetapi dpena di atur menjadi satu (depan =1 ) jika depan sama dengan maksimum elemen array.
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 302 302 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 7.2 Contoh queue (antrian) Operasi-operasi dasar dari sebuah queue adalah: 1. Enqueue: proses penambahan atau memasukkan satu elemen di belakang 2. Dequeue: proses pengambilan atau mengeluarkan satu elemen di posisi depan. 7.3 Contoh Program Queue 7.3.1 Latihan 1 Buatlah program baru dengan cara file-new-source atau gabungan Ctrl – N kemudian ketik source code programnya seperti dibawah ini : #include <stdio.h> #include <iostream>
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 303 303 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA #include <conio.h> #define MAX 8 using namespace std; typedef struct{ int data[MAX]; int head; int tail; }Queue; Queue antrian; void Create(){ antrian.head=antrian.tail=-1; } int IsEmpty(){ if(antrian.tail==-1)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 304 304 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA return 1; else return 0; } int IsFull(){ if(antrian.tail==MAX-1) return 1; else return 0; } Enqueue(int data) { if(IsEmpty()==1) { antrian.head=antrian.tail=0; antrian.data[antrian.tail]=data;
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 305 305 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA printf("%d sudah dimasukan",antrian.data[antrian.tail]); } else if(IsFull()==0) { antrian.tail++; antrian.data[antrian.tail]=data; printf("%d sudah dimasukan",antrian.data[antrian.tail]); } } int Dequeue() { int i; int e = antrian.data[antrian.head]; for(i=antrian.head; i<=antrian.tail-1;i++) { antrian.data[i]=antrian.data[i+1]; }