PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 132 BAB V POINTER 5.1 Pengertian Pointer Pointer adalah variabel atau objek yang menunjuk ke variabel atau objek lain. Sebelumnya dijelaskan tentang variabel, “variabel adalah representasi dari alamat memori di komputer.” Dan pointer hanyalah variabel yang menyimpan alamat memori, memori bisa berasal dari variabel, objek dan lain-lain. Dengan petunjuk pointer, dimungkinkan untuk menampilkan memori, mendapatkan isi memori, dan memodifikasi konten memori yang ditentukan. Sebelum kita masuk ke tips, ada dua hal yang harus Anda ketahui. Ada dua jenis pointer yang kita gunakan, yaitu address-of (&) dan dereference operator (*). 5.2 Macam-macam Operator pada Pointer 5.2.1 Addres-of Operator (&) adalah operator yang memungkinkan kita untuk mendapatkan/melihat alamat memori yang dimiliki oleh variabel ini. Cara menggunakannya adalah dengan meletakkan tanda di depan identitas ketika variabel dipanggil. Ini menyebabkan kompiler memberikan alamat memori alih-alih konten/nilai memori. 5.2.2 Dereference operator (*) Dereference operator (*) adalah operator yang memungkinkan Anda mengambil isi/nilai memori berdasarkan alamat memori. Pointer adalah variabel yang menyimpan
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 133 alamat memori dari variabel lain. Dimungkinkan untuk mengubah nilai variabel yang ditunjukkan oleh penunjuk dan menyalinnya. Saat program sedang berjalan, kita dapat mengubah tujuan penunjuk dengan mengubahnya ke alamat memori variabel lain atau ke alamat memori yang bukan variabel. 5.3 Cara Membuat Pointer Sebuah pointer dibuat dengan awalan namanya dengan simbol * (asterik), kemudian diisi dengan alamat memori untuk digunakan sebagai referensi. Contohnya: int *pointer1 = 000001; maka *pointer1 dapat mengakses data pada alamat memori 00001. Dengan kata lain, *pointer1 menggunakan alamat 00001 sebagai referensi. Contoh: Bentuk penulisan: tipeData *identitas; //atau tipeData *identitas = &var;
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 134 Contoh penulisan: int *plnt; doble *pDouble = &myVar; Secara umum pointer sebenarnya adalah variabel, aturan untuk variabel juga berlaku untuk pointer, jadi tidak jauh berbeda dengan variabel. Pointer hanya mendapatkan sedikit perbedaan, yaitu penambahan dua operator, menjadikan variabel tersebut sebagai variabel pointer. Untuk mendefinisikan variabel pointer, kita cukup menambahkan operator dereferencing di depan identitas. Operator referensi tidak harus ditambahkan ke identitas, bisa juga setelah tipe data atau antara tipe data dan identitas. notasi yang berbeda memiliki arti yang sama, yaitu operator referensi hanya berlaku untuk satu variabel. Pointer tidak hanya berlaku pada variabel, pointer dapat di gunakan pada function, dan objek lain.caranya masih sama seperti melakukan pada variabel. 5.4 Cara mengakses Pointer Pointer adalah variabel, menggunakan pointer tidak jauh berbeda dengan menggunakan variabel. Untuk mendapatkan nilai pointer kita hanya perlu memanggil identitas pointer. Plnt Panggilan mengembalikan nilai pointer, yang merupakan alamat memori dari variabel yang ditunjuk oleh pointer. Karena pointer hanya dapat memiliki nilai berupa alamat memori, untuk mengubah nilai pointer atau mengubah tujuan pointer, kita memerlukan operator address-of (&) pada operan sumber.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 135 plnt = &myVar operan sumber mengembalikan alamat memori myVar dan merupakan nilai yang diperlukan oleh variabel penunjuk. 5.5 Latihan praktikum Gambar 5. 1 tampilan dev C++ dan cara mulai buat program
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 136 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. 2 Flowchart pointer konstanta
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 137 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(); }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 138 Gambar 5. 3 contoh program pointer konstanta Gambar 5. 4 hasil compile program pointer konstanta
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 139 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
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 140 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(); }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 141 Gambar 5. 6 program pointer variabel Gambar 5. 7 hasil compile pointer variable
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 142 5.6 Studi kasus 5.6.1 Operasi aritmatika pada pointer Berikut flowchart program aritmatika : Gambar 5. 8 Flowchart program aritmatika
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 143 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; cout<<"Nilai"<<*(penunjuk+2)<<"ada di alamat memori"<<(penunjuk+2)<<endl;
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 144 getch(); } Compile dan perbaiki program sampai benar Gambar 5. 9 program operasi pointer aritmatika Gambar 5. 10 hasil compile pointer aritmatika
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 145 5.6.2 Pointer dalam array Berikut flowchart pointer dalam array: Gambar 5. 11 flowchart pointer dalam array
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 146 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(); }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 147 Compile dan perbaiki program sampai benar Gambar 5. 12 program pointer dalam array Gambar 5. 13 hasil compile pointer dalam array
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 148 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.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 149
BAB VI STACK OLEH Ardi Salman 07352211021 PROGRAM STUDI INFORMATIKA FAKULTAS TEKNIK UNIVERSITASKHAIRUN TERNATE 2023
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 151 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>
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 152 #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];
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 153 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) ? "": ","); } }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 154 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;
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 155 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++
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 156 Gambar 6. 2 Lanjutan struktur code latihan C++ Gambar 6. 3 Lanjutan struktur code latihan C++
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 157 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
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 158 Hasil running jika memilih pilih kedua atau menghapus data di dalam stack (tumpukan) Gambar 6. 6 Hasil running Hasil running jika memilih pilihan ke-3 atau keluar Gambar 6. 7 Hasil running
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 159 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. 8 flowchart program stack
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 160 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();
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 161 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();
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 162 break; case 2: pop(); break; case 3: display(); break; case 4: exit(1); default: printf("\nPILIHAN TIDAK TERSEDIA\n"); } } getch(); } void push() {
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 163 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;
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 164 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. 9 Struktur pemograman
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 165 Gambar 6. 10 Lanjutan Struktur pemograman Gambar 6. 11 Lanjutan Struktur pemograman
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 166 Gambar 6. 12 Lanjutan Struktur pemograman
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 167 Gambar 6. 13 Hasil running
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 168 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. 14 flowchart program stack
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 169 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; struct node *link;
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 170 }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) switch(choice) {
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 171 case 1 : push(); break; case 2: pop(); break; case 3: display(); break; case 4: exit(0); default: printf("\nPILIHAN TIDAK TERSEDIA\n"); } } getch(); } void push()
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 172 { 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"); } } void pop() {
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 173 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; if(top == NULL) { printf("Empty Stack !!!\n"); } else
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 174 { temp = top; printf("____[Stack]____\n"); while(temp != NULL) { printf("\n__\n"); printf("|%4d|",temp->data); temp = temp->link; } } } Compile sampai benar :
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 175 Gambar 6. 15 Struktur pemograman Gambar 6. 16 Struktur pemograman
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 176 Tampilan running : Gambar 6. 17 Hasil running Gambar 6. 18 Hasil running
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 177 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.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 178
BAB VII QUEUE OLEH Ardi Salman 07352211021 PROGRAM STUDI INFORMATIKA FAKULTAS TEKNIK UNIVERSITASKHAIRUN TERNATE 2023
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 192 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.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK I TEKNIK INFORMATIKA UNKHAIR 193 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>