STRUKTUR DATA
1. Buatlah algoritma untuk memasukan data melalui keyboard satu persatu dan mem Push
data tersebut ke Stack smapai Stack penuh tidak bias diisi lagi.
Jawaban:
Const
MAXSTACK=n
Type
stackArray=array[1...MAXSTACK] of tipedata
Stack: stackArray
top: Integer
masukan: Integer
Algoritma
If top = n
Output("Tidak dapat melakukan push")
Else
while (top < MAXSTACK):
Output("Masukan input: ")
masukan <- Input()
top <- top+1
Stack[top] <- masukan
EndFor
EndIf
2. Buatlah algoritma untuk mendelete isi antrian sampai antrian kosong.
const
CURRENT_QUEUE = n
Type
Q = ↑Simpul
Simpul = Record
<info: tipedata
next: Q
prev: Q>
Endrecord
pointerDepan = Q
pointerBelakang = Q
bantu = Q
data = tipedata
i = integer
Algoritma
if(pointerDepan != null )
while(CURRENT_QUEUE > 0)
data <- (pointerDepan)->info
bantu <- pointerDepan
pointerDepan <- bantu->next
hapus(bantu)
if(pointerDepan = NULL)
belakang <- NULL
EndIf
return data
endWhile
else
output("Queue sudah kosong")
EndIf
3. Buatlah pohon biner dengan ketentuan : “Jika nilai dari simpul yang akan disisipkan
lebih besar dari simpul parent, maka simpul tersebut ditempatkan sebagai subtree kanan.
Jika lebih kecil, maka simpul baru tersebut disimpan sebagai subtree kiri”, dari data
berikut : 60, 55, 70, 45, 50, 35, 65, 75, 80, 40
5. Buatlah algoritma untuk menghitung total nilai simpul pada sebuah tree menggunakan
penelusuran post order
Algoritma dalam C++ (menggunakan C++ karena menggunakan konsep Recursive, dimana
memanggil prosedur di dalam prosedur itu sendiri (Dynamic programming))
struct Node
{
int data;
struct Node* left, *right;
Node(int data)
{
this->data = data;
left = right = NULL;
}
};
printPostorder(node->left);
printPostorder(node->right);