Nama : Fakhrian Elanta
NRP : 5025251019
1. 1. Penjelasan array Digunakan untuk apa
Array, Berikan contoh penggunaanya dalam aplikasi .
Jawab :
Array adalah suatu tipe data yang dapat menyimpan beberapa nilai sekaligus,
dan nilai tersebut disimpan oleh indikasi index yang dapat dipanggil untuk
mengetahui nilai pada index tertentu.
Contoh penggunanaan pada aplikasi adalah menyimpan data user, daripada
membuat variable baru lebih baik menggunakan array sehingga dapat mengakses
seluruh data user daripada mencarinya satu-satu
2. 2. Diketahui Stack berupa Linked List
dengan kondisi mula-mula Stack kosong. Gambarkan Stack berupa Double Linked
List tersebut beserta posisi penunjuknya (pointer), jika ada perintah :
a. Push(Top,60), Push(Top,40), Pop(Top,Item)
b. Push(Top,25), Pop(Top,Item), Pop(Top,Item)
c. Pop(Top,Item), Pop(Top,Item), Push(Top,50)
Jawab :
a. Push(Top, 60) = NULL ‹-60 -› NULL, Top berada di 60
Push(Top, 40) = NULL‹-40 ‹-› 60 ‹-› NULL, Top berada di 40
Pop(Top, item) = NULL ‹- 60 -› NULL, Top berada di 60
b. Push(Top, 25) = NULL‹-25-›NULL, Top berada di 25
Pop(Top, Item) = NULL, tidak ada data lagi
Pop(Top, item) = NULL, karena sudah tidak ada data lagi
c. Pop(Top,Item) = NULL, tidak ada data di set
Pop(Top,Item) = NULL, tidak ada data di set
Push(Top,50) = Null ‹- 50 -› Null , top berada di 50
3. Diketauhui Ekspresi berikut E = a + (2·b^3)/(f − g) + d·h
- Ubahlah ke dalam notasi Postfix
- Implementasikan menggunakan Stack dan buat screenshot eksekusinya.
Jawab :
Notasi postfix dari soal :
a 2 b 3 ^ * f g - / + d h * +
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int prioritas(char op) {
if (op == '^') return 3;
if (op == '*' || op == '/') return 2;
if (op == '+' || op == '-') return 1;
return 0;
}
string infixKePostfix(string infix) {
stack<char> s;
string postfix = "";
for (int i = 0; i < infix.length(); i++) {
char c = infix[i];
if (isalnum(c)) {
postfix += c;
}
else if (c == '(') {
s.push('(');
}
else if (c == ')') {
while (!s.empty() && s.top() != '(') {
postfix += s.top();
s.pop();
}
if (!s.empty()) s.pop();
}
else {
while (!s.empty() && prioritas(s.top()) >= prioritas(c)) {
if (c == '^' && s.top() == '^') break;
postfix += s.top();
s.pop();
}
s.push(c);
}
}
while (!s.empty()) {
postfix += s.top();
s.pop();
}
return postfix;
}
int main() {
string ekspresi;
cout << "Masukkan ekspresi Infix: ";
cin >> ekspresi;
string hasil = infixKePostfix(ekspresi);
cout << "Notasi Postfix: " << hasil << endl;
return 0;
}
Berikut penerapan program dan ss dari operasi yang dijalankan :
4. Diketahui maksimum Queue = 9 elemen dengan kondisi mula-mula Queue kosong.
Gambarkan Queue beserta posisi Front dan Rear, jika ada perintah :
a. Tambah Angka 19
b. Tambah Angka 7
c. Hapus 2 Angka
d. Tambah Angka 40
e. Hapus 3 Angka
f. Tambah Angka 18
5. Soal studi kasus
1. Tipe data queue digunakan untuk menggunakan prinsip FIFO (first in first out) sehingga yang datang pertama dilayani pertama juga
Berikut merupakan penerapan untuk 2,3,4
#include <iostream>
#include <map>
#include <string>
using namespace std;
int urutan = 1;
map<string, int> mahasiswa;
struct Node {
string data;
Node* next;
};
struct Queue {
Node *front = NULL;
Node *rear = NULL;
};
void EnQueue(Queue &q, string isi) {
Node* newNode = new Node();
newNode->data = isi;
newNode->next = NULL;
if (q.rear == NULL) {
q.front = q.rear = newNode;
} else {
q.rear->next = newNode;
q.rear = newNode;
}
mahasiswa[isi] = urutan;
cout << isi << " masuk ke dalam list dengan urutan: " << urutan << endl;
urutan++;
}
void DeQue(Queue &q) {
if (q.front == NULL) {
cout << "Antrean kosong! Tidak ada mahasiswa yang bisa dilayani." << endl;
return;
}
Node* temp = q.front;
cout << "Mahasiswa bernama: " << temp->data << " dengan urutan: " << mahasiswa[temp->data] << " dilayani" << endl;
q.front = q.front->next;
if (q.front == NULL) {
q.rear = NULL;
}
delete temp;
}
void tampil(Queue q) {
if (q.front == NULL) {
cout << "List antrian kosong." << endl;
return;
}
Node* curr = q.front;
cout << "--- List Antrian Saat Ini ---" << endl;
while (curr != NULL) {
cout << "List ke-" << mahasiswa[curr->data] << ": " << curr->data << endl;
curr = curr->next;
}
cout << "-----------------------------" << endl;
}
int main() {
Queue q;
string cmd;
cout << "Perintah tersedia: Enque [nama], Deque, Show, Exit" << endl;
while (true) {
cout << "\nMasukkan perintah : ";
cin >> cmd;
if (cmd == "Enque") {
string nama;
cin >> nama;
EnQueue(q, nama);
}
else if (cmd == "Deque") {
DeQue(q);
}
else if (cmd == "Show") {
tampil(q);
}
else if (cmd == "Exit") {
break;
}
else {
cout << "Perintah tidak dikenal!" << endl;
}
}
return 0;
}

Komentar
Posting Komentar