ASISTEN :
1. Ansar
2. Niswa Ayu Lestari
OLEH :
Nama : Riangdana Jurmasari
Nim : 60900121012
Kelas : A
2022
Soal
1. Buatlah sebuah antrian prioritas dengan menggunakan
pendekatan array sebagai kontainer antrian.
Jawaban :
1. #include <iostream>
#include <string>
#include <queue>
using namespace std;
priority_queue<string> pq1;
string s1 = string("pulpen"), s2 = string("pensil"), s3 = string("buku latihan"), s4 =
string("buku catatan"), s5 = string("penghapus");
int main(){
pq1.push(s1); pq1.push(s2); pq1.push(s3); pq1.push(s4); pq1.push(s5);
while(!pq1.empty())
{
cout << pq1.top() << " "<<endl;
pq1.pop();
} cout<<'\n';
};
Output :
2. #include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
struct node
{
string namaM;
int nim;
struct node *link;
};
class Priority_Queue
{
private:
node *front;
public:
Priority_Queue()
{
front = NULL;
}
void insert(string nama, int nimm)
{
node *tmp, *q;
tmp = new node;
tmp->namaM = nama;
tmp->nim = nimm;
if (front == NULL || nimm > front->nim)
{
tmp->link = front;
front = tmp;
}
else
{
q = front;
while (q->link != NULL && q->link->nim >= nimm)
q = q->link;
tmp->link = q->link;
q->link = tmp;
}
}
void del()
{
node *tmp;
if (front == NULL)
cout << "ANTRIAN KOSONG\n";
else
{
tmp = front;
cout << "MENGELUARKAN : " << tmp->namaM << endl;
front = front->link;
free(tmp);
}
}
void display()
{
node *ptr;
ptr = front;
if (front == NULL)
cout << "ANTRIAN KOSONG\n";
else
{
cout << "ANTRIAN :\n";
cout << "=====================" << endl;
cout << "NIM NAMA\n";
cout << "=====================" << endl;
while (ptr != NULL)
{
cout << ptr->nim << " " << ptr->namaM << endl;
ptr = ptr->link;
}
}
}
};
int main()
{
int choice, nim;
string nama;
Priority_Queue pq;
do
{
cout << "=====================" << endl;
cout << "1.QUEUE\n";
cout << "2.DEQUE\n";
cout << "3.DISPLAY\n";
cout << "4.Quit\n";
cout << "=====================" << endl;
cout << "PILIH[1-4] : ";
cin >> choice;
switch (choice)
{
case 1:
cout << "MASUKKAN NAMA : ";
cin >> nama;
cout << "MASUKKAN NIM : ";
cin >> nim;
pq.insert(nama, nim);
break;
case 2:
pq.del();
break;
case 3:
pq.display();
break;
case 4:
break;
default:
cout << "PILIHAN TIDAK ADA\n";
}
} while (choice != 4);
return 0;
}
Output :
3. #include <iostream>
struct Node
int data, p;
Node *next;
};
tmp->data = d;
tmp->p = pr;
tmp->next = r;
r = tmp;
}
else
q = r;
q = q->next;
tmp->next = q->next;
q->next = tmp;
void display()
Node *temp = r;
cout << "\tNO PASIAN : " << temp->data << " STADIUM : " << temp->p
<< endl;
temp = temp->next;
void dequeue()
if (r == NULL)
{
cout << "ANTRIAN KOSONG\n";
return;
else
temp = r;
r = r->next;
free(temp);
int main()
do
case 1:
enqueue(numberOfElements, qprior);
break;
case 2:
display();
break;
case 3:
dequeue();
break;
default:
break;
Output
Soal
1. Buatlah sebuah struktur data hash table menggunakan fungsi lain
selain modulus untuk memetakan key-value.
2. Buatlah sebuah struktur data hash table untuk memetakan data
mahasiswa dan alamat mahasiswa. Gunakan array sebagai
container data.
jawaban :
1. #include <iostream>
#include <list>
using namespace std;
class HashTable
{
int capacity;
list<int> *table;
public:
HashTable(int V);
void insertItem(int key, int data);
void deleteItem(int key);
int checkPrime(int n)
{
int i;
if (n == 1 || n == 0)
{
return 0;
}
for (i = 2; i < n / 2; i++)
{
if (n % i == 0)
{
return 0;
}
}
return 1;
}
int getPrime(int n)
{
if (n % 2 == 0)
{
n++;
}
while (!checkPrime(n))
{
n += 2;
}
return n;
}
list<int>::iterator i;
for (i = table[index].begin();
i != table[index].end(); i++)
{
if (*i == key)
break;
}
if (i != table[index].end())
table[index].erase(i);
}
void HashTable::displayHash()
{
for (int i = 0; i < capacity; i++)
{
cout << "table[" << i << "]";
for (auto x : table[i])
cout << " --> " << x;
cout << endl;
}
}
int main()
{
int key[] = {231, 321, 212, 321, 433, 262};
int data[] = {123, 432, 523, 43, 423, 111};
int size = sizeof(key) / sizeof(key[0]);
HashTable h(size);
for (int i = 0; i < size; i++)
h.insertItem(key[i], data[i]);
h.deleteItem(12);
h.displayHash();
}
2. #include <iostream>
using namespace std;
int hashing[5];
// elemen hashing dari 1-5
string dataMhs(string nama,string alamat);
void inisialisasi()
{
for (int i = 1; i <= 5; i++)
{
hashing[i] = -1;
}
}
int cek_kosong()
{
int kosong = 0;
for (int i = 1; i <= 5; i++)
{
if (hashing[i] == -1)
kosong++;
}
if (kosong != 0)
return 1;
else
return 0;
}
int pengacak()
{
int acak;
lagi:
acak = rand() % 6;
if (acak == 0)
goto lagi;
return acak;
}
void input(int input)
{
int indeks;
if (cek_kosong() == 0)
{
cout <<"Tempat penyimpan data penuh\n";
}
else
{
indeks = pengacak();
acak:
if (hashing[indeks] != -1)
{
cout <<"= Terjadi tabrakan pada indeks : "<< indeks <<"\n";
if (indeks == 5)
{
indeks = 1;
cout <<"= Karena indeks = 5 maka indeks dikembalikan ke 1\n";
goto acak;
}
else
{
indeks++;
cout <<"= Tambah indeks menjadi "<< indeks << endl;
}
goto acak;
}
else
{
hashing[indeks] = input;
cout <<"= Data masuk pada indeks "<< indeks << endl;
}
}
}
void searching(int cari)
{
int temu = 0;
for (int i = 1; i <= 5; i++)
{
if (hashing[i] == cari)
temu = 1;
}
if (temu == 1){
cout <<"= Data ditemukan\n";
}
else
cout <<"= Data tidak ditemukan\n";
}
void hapus(int hapus)
{
int del = 0;
for (int i = 1; i <= 5; i++)
{
if (hashing[i] == hapus)
{
del = 1;
hashing[i] = -1;
}
}
if (del == 0)
cout <<"= Data tidak ada\n";
else
cout <<"= Data terhapus\n";
}
void tampil()
{
for (int i = 1; i <= 5; i++)
{
cout <<"= Indeks ke "<< i <<" : ";
if (hashing[i] != -1){
cout << hashing[i] << endl;
}
else
cout <<"kosong\n";
}
}
string dataMhs(string nama,string alamat){
cout << "Masukkan Nama Mahasiswa :";
cin >> nama;
cout << "Masukkan Alamat Mahasiswa :";
cin >> alamat;
return nama;
}
int main()
{
inisialisasi();
int pilihan, data;
string namaMhs,alamatMhs;
do
{
menu:
system("cls");
cout <<"========================\n";
cout <<"= =\n";
cout <<"= PROGRAM HASH TABLE =\n";
cout <<"= =\n";
cout <<"========================\n";
cout <<"= =\n";
cout <<"= 1.Input data =\n";
cout <<"= 2.Searching data =\n";
cout <<"= 3.Delete data =\n";
cout <<"= 4.Tampilkan data =\n";
cout <<"= 5.Keluar =\n";
cout <<"= =\n";
cout <<"========================\n";
cout <<"= Pilihan : ";
cin >> pilihan;
switch (pilihan) {
case 1:
cout <<"= Masukkan data(harus positif) : ";
cin >> data;
dataMhs(namaMhs,alamatMhs);
if (data < 0)
{
cout <<"= Data tidak boleh negatif\n";
cout <<"=\n= ";
system("pause");
goto menu;
}
input(data);
cout <<"=\n= ";
system("pause");
break;
case 2:
cout <<"= Masukkan data yang dicari : ";
cin >> data;
cout << namaMhs << endl;
cout << alamatMhs << endl;
searching(data);
system("pause");
break;
case 3:
cout <<"= Masukkan data yang dihapus : ";
cin >> data;
hapus(data);
cout <<"=\n= ";
system("pause");
break;
case 4:
tampil();
cout <<"=\n= ";
system("pause");
break;
}
} while (pilihan != 5);
}
Tugas Pendahuluan 8
“ Hash Table ”
ASISTEN :
1. Ansar
2. Niswa Ayu Lestari
OLEH :
Nama : Riangdana Jurmasari
Nim : 60900121012
Kelas : A
2022