Anda di halaman 1dari 6

Nama : Hasanuddin

NIM : 1810131310027
Kelas : A1 Pilkom 2018
Mata Kuliah : Struktur Data/Tugas UAS

1. Tree

Source code program:


#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

using namespace std;


//pendeklarasian struct sebuah tree awal
struct Node{
int data;
Node *kiri;
Node *kanan;
};
//fungsi untuk menambahkan node baru
void tambah(Node **root, int databaru)
{
//jika root masih kosong
if((*root) == NULL)
{
//pembuatan node baru
Node *baru;
//pengalokasian memori dari node yang telah dibuat
baru = new Node;
//inisialisasi awal node yang baru dibuat
baru->data = databaru;
baru->kiri = NULL;
baru->kanan = NULL;
(*root) = baru;
(*root)->kiri = NULL;
(*root)->kanan = NULL;
cout<< "Data bertambah!";
}
//jika data yang akan dimasukkan lebih kecil daripada elemen root, maka akan
diletakkan di node sebelah kiri.
else if(databaru<(*root)->data)
tambah(&(*root)->kiri, databaru);
//jika data yang akan dimasukkan lebih besar daripada elemen root, maka akan
diletakkan di node sebelah kanan
else if(databaru>(*root)->data)
tambah(&(*root)->kanan, databaru);
//jika saat dicek data yang akan dimasukkan memiliki nilai yang sama dengan
data pada root
else if(databaru == (*root)->data)

1
cout<<"Data sudah ada!";
}
//fungsi yang digunakan untuk mencetak tree secara preOrder
void preOrder(Node *root)
{
if(root != NULL){
cout<< root->data << " " ;
preOrder(root->kiri);
preOrder(root->kanan);
}
}
//fungsi yang digunakan untuk mencetak tree secara inOrder
void inOrder(Node *root)
{
if(root != NULL){
inOrder(root->kiri);
cout<<root->data << " " ;
inOrder(root->kanan);
}
}
//fungsi yang digunakan untuk mencetak tree secara postOrder
void postOrder(Node *root)
{
if(root != NULL){
postOrder(root->kiri);
postOrder(root->kanan);
cout<< root->data << " " ;
}
}
//fungsi utama
int main()
{
//deklarasikan variabel
int pil, data;// c;
Node *pohon; //*t;
pohon = NULL; //inisialisasi node pohon
//perulangan do-while
do
{
system("cls"); //bersihkan layar
cout<<"\t#PROGRAM TREE C++#";
cout<<"\n\t==================";
cout<<"\nMENU";
cout<<"\n----\n";
cout<<"1. Tambah\n";
cout<<"2. Lihat pre-order\n";
cout<<"3. Lihat in-order\n";
cout<<"4. Lihat post-order\n";
cout<<"5. Exit\n";
cout<<"Pilihan : ";
cin >> pil;
switch(pil)
{
//jika pil bernilai 1
case 1 :
cout<<"\nINPUT : ";
cout<<"\n-------";

2
cout<<"\nData baru : ";
cin>> data;
//panggil fungsi untuk menambah node yang berisi data pada tree
tambah(&pohon, data);
break;
//jika pil bernilai 2
case 2 :
cout<<"\nOUTPUT PRE ORDER : ";
cout<<"\n------------------\n";
if(pohon!=NULL)
//panggil fungsi untuk mencetak data secara preOrder
preOrder(pohon);
else
cout<<"Masih kosong!";
break;
//jika pil bernilai 3
case 3 :
cout<<"\nOUTPUT IN ORDER : ";
cout<<"\n------------------\n";
if(pohon!=NULL)
//panggil fungsi untuk mencetak data secara inOrder
inOrder(pohon);
else
cout<<"Masih kosong!";
break;
//jika pil bernilai 4
case 4 :
cout<<"\nOUTPUT POST ORDER : ";
cout<<"\n------------------\n";
if(pohon!=NULL)
//panggil fungsi untuk mencetak data secara postOrder
postOrder(pohon);
else
cout<<"Masih kosong!";
break;
}
_getch();
}while(pil != 5); //akan diulang jika input tidak samadengan 5
return EXIT_FAILURE;
}

3
Output Program:

2. Graph

Source code program:


#include<iostream>
#include <list>

using namespace std;


class Graph
{
int V;
list<int> *adj;
public:
Graph(int V);
void addEdge(int v, int w);
void BFS(int s);
};

Graph::Graph(int V)
{
this->V = V;

4
adj = new list<int>[V];
}

void Graph::addEdge(int v, int w)


{
adj[v].push_back(w); // Add w to v’s list.
}

void Graph::BFS(int s)
{
bool *visited = new bool[V];
for(int i = 0; i < V; i++)
visited[i] = false;

list<int> queue;

visited[s] = true;
queue.push_back(s);

list<int>::iterator i;

while(!queue.empty())
{

s = queue.front();
cout << s << " ";
queue.pop_front();

for (i = adj[s].begin(); i != adj[s].end(); ++i)


{

5
if (!visited[*i])
{
visited[*i] = true;
queue.push_back(*i);
}
}
}
}
int main()
{
Graph g(4);
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 3);

cout << "Following is Breadth First Traversal "


<< "(starting from vertex 2) \n";
g.BFS(2);

return 0;
}

Anda mungkin juga menyukai