laprak strukdat 07

Download Laprak Strukdat 07

Post on 26-Dec-2015

5 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • BAB I

    PENDAHULUAN

    1.1 Dasar Teori

    Tree merupakan salah satu bentuk struktur data tidak linier yang menggambarkan

    hubungan yang bersifat hirarkis (hubungan one to many) antara elemen-elemen. Tree juga

    dapat didefinisikan sebagai kumpulan simpul / node dengan satu elemen khusus yang disebut

    root dan node lainnya terbagi menjadi himpunan-himpunan yang tak saling berhubungan satu

    sama lainnya (disebut subtree). Berikut adalah istilah-istilah umum dalam tree :

    Parent : predecessor satu level di atas suatu node.

    Child : successor satu level di bawah suatu node.

    Sibling : node-node yang memiliki parent yang sama dengan suatu node.

    Subtree : bagian dari tree yang berupa suatu node beserta descendant-nya dan

    memiliki semua karakteristik dari tree tersebut.

    Size : banyaknya node dalam suatu tree.

    Height : banyaknya tingkatan/level dalam suatu tree.

    Root : satu-satunya node khusus dalam tree yang tak punya predecssor.

    Leaf : node-node dalam tree yang tak memiliki seccessor.

    Degree : banyaknya child yang dimiliki suatu node.

    Sedangkan binary tree adalah sebuah pengorganisasian secara hirarki dari beberapa buah

    simpul, dimana masing-masing simpul tidak mempunyai anak lebih dari 2. Simpul yang

    berada di bawah sebuah simpul dinamakan anak (child) dari simpul tersebut. Simpul yang

    berada di atas sebuah simpul dinamakan induk (parent) dari simpul tersebut.

    1.2 Permasalahan

    1.2.1 Lengapilah file program bintree.c dengan menambahkan nBElement.

    1.2.2 Buatlah tampilan menu bintree yang berisi pilihan isTreeEmpty, isUnerLeft,

    isUnerRight, isOneElement, isBin, dan nBElement.

  • BAB II

    PEMBAHASAN

    a. binTree.h

    /*

    Nama : Ayu Riana Devi Aprilia

    Nim : 24010313120042

    Judul : BinTree.h

    tanggal : 28 November 2014

    */

    #ifndef BINTREE_H

    #define BINTREE_H

    #include

    #include

    #define nil NULL

    //definisi dan spesifikasi

    typedef int tipeInfo;

    typedef struct tnode *address;

    typedef struct tnode{

    tipeInfo info;

    address left;

    address right;

    }node;

    typedef address BinTree;

    typedef enum{

    false, true

    }boolean;

    BinTree Tree (tipeInfo A, BinTree L, BinTree R);

    tipeInfo Akar(BinTree BT);

    BinTree Left(BinTree BT);

    BinTree Right(BinTree BT);

  • boolean isTreeEmpty(BinTree BT);

    boolean isUnerLeft(BinTree BT);

    boolean isUnerRight(BinTree BT);

    boolean isBin(BinTree BT);

    boolean isOneElmt(BinTree BT);

    void createBinTree(BinTree BT);

    int nBElement(BinTree BT);

    #endif

    Program binTree.h pada dasarnya merupakan file header yang nantinya akan

    dijadikan library oleh main program. pada program ini, terdapat pendeklarasian awal dari

    procudere, selector, predikat , tipe bentukan maupun konstruktor yang digunakan.

    Adapun pendeklarasian tipe bentukan, yaitu dengan menggunakan tipe data struct, tipe

    data struct yang dideklarasikan ialah tipeInfo, tnode *address, tnode, struct

    dari address first, dan tipe enumerasi yang menghasilkan return value boolean

    yaitu true atau false.

    Adapun pendeklarasian fungsi , konstruktor, selector maupun predikat dalam

    program ini ialah sebagai berikut

    a) BinTree Tree (tipeInfo A, BinTree L, BinTree R);

    BinTree Tree merupakan suatu konstruktor. Konstruktor sendiri merupakan

    fungsi yang otomatis akan dipanggil setiap kali melakukan instasiasi terhadap

    suatu kelas dan digunakan untuk melakukan inisialisasi nilai dari data data

    yang terdapat di dalam kelas yang bersangkutan. Konstruktor BinTree sendiri

    berfungsi untuk sebagai alokasi memori.

    b) tipeInfo Akar(BinTree BT);

  • tipeInfo Akar merupakan suatu selector yang berfungsi untuk mengembalikan

    nilai / mengirimkan nilai atau nilai dari suatu fungsi kepada fungsi yang lain

    yang memanggilnya.

    c) BinTree Left(BinTree BT);

    Selector BinTree Left berfungsi untuk mengembalikan nilai / mengirimkan

    nilai atau nilai dari suatu fungsi kepada fungsi yang lain yang memanggilnya.

    d) BinTree Right(BinTree BT);

    Selector BinTree Right berfungsi untuk mengembalikan nilai / mengirimkan

    nilai atau nilai dari suatu fungsi kepada fungsi yang lain yang memanggilnya.

    e) boolean isTreeEmpty(BinTree BT);

    Boolean isTreeEmpty merupakan suatu predikat yang dapat mengirimkan

    return value berupa true atau false. Dalam kasus ini, tree akan mengirimkan

    nilai True jika pohon bernilai kosong.

    f) boolean isUnerLeft(BinTree BT);

    Boolean isUnerLeft merupakan suatu predikat yang dapat mengirimkan

    return value berupa true atau false. Dalam kasus ini, tree akan mengirimkan

    nilai True jika hanya memiliki ank sebelah kiri.

    g) boolean isUnerRight(BinTree BT);

    Boolean isUnerRight merupakan suatu predikat yang dapat mengirimkan

    reurn value berupa true atau false. Dalam kasus ini, tree akan mengirimkan

    nilai True jika pohon hanya memiliki anak sebelah kanan.

    h) boolean isBin(BinTree BT);

    Boolean isBin merupakan suatu predikat yang dapat mengirimkan return

    value berupa true atau false. Dalam kasus ini, tree akan mengirimkan nilai

    True jika pohon adalah pohon biner.

    i) boolean isOneElmt(BinTree BT);

    Boolean isOneElmt merupakan suatu predikat yang dapat mengirimkan return

    value berupa true atau false. Dalam kasus ini, tree akan mengirimkan nilai

    True jika pohon hanya memiliki satu elemen.

    j) void createBinTree(BinTree BT);

    procedure createBinTree digunakan untuk membuat/membentuk tree baru

    pada program.

    k) int nBElement(BinTree BT);

  • konstruktor int nBElement berfungsi untuk memberikan banyaknya jumlah

    elemen dalam pohon biner.

    b. binTree.c

    /*

    Nama : Ayu Riana Devi Aprilia

    Nim : 24010313120042

    Judul : BinTree.c

    */

    #ifndef BINTREE_H

    #define BINTREE_C

    #include

    #include "BinTree.h"

    //konstruktor

    BinTree Tree (tipeInfo A, BinTree L, BinTree R){

    //kamus lokal

    address p;

    //algoritma

    //alokasi pointer penjelajah

    p = (address) malloc (sizeof(node));

    //pengisian akar

    if (p != nil){

    p -> info = A;

    p -> left = L;

    p -> right = R;

    }

    return p;

    }

    //selektor

    tipeInfo Akar(BinTree BT){

    //kamus lokal

    //algoritma

    return (BT -> info);

  • }

    BinTree Left(BinTree BT){

    //kamus lokal

    //algoritma

    return (BT -> left);

    }

    BinTree Right(BinTree BT){

    //kamus lokal

    //algoritma

    return (BT -> right);

    }

    //predikat

    boolean isTreeEmpty(BinTree BT){

    //mengirimkan TRUE jika binary tree kosong

    //kamus lokal

    //algoritma

    return(BT == nil);

    }

    boolean isUnerLeft(BinTree BT){

    //mengirimkan TRUE jika pohon BT hanya mempunyai anak kiri

    //kamus lokal

    //algoritma

    return((Right(BT) == nil) && (Left(BT) != nil));

    }

    boolean isUnerRight(BinTree BT){

    //mengirimkan TRUE jika pohon BT hanya mempunyai anak kanan

    //kamus lokal

    //algoritma

    return((Right (BT) != nil) && (Left(BT) == nil));

    }

    boolean isBin(BinTree BT){

    //mengirimkan TRUE jika pohon BT adalah pohon biner

  • //kamus lokal

    //algoritma

    return((Right (BT) != nil) && (Left(BT) != nil));

    }

    boolean isOneElmt(BinTree BT){

    //mengirimkan TRUE jika pohon BT adalah pohon yang hanya memiliki satu

    elemen saja

    //kamus lokal

    //algoritma

    return((Right (BT) == nil) && (Left(BT) == nil));

    }

    void createBinTree(BinTree BT){

    /*

    I.S : pohon biner belum trebentuk

    F.S : pohon biner suah terbentuk

    proses : membentuk pohon biner

    */

    //kamus

    //algoritma

    BT = nil;

    }

    int nBElement(BinTree BT){

    //memberikan banyaknya elemen dari pohon P

    //kamus

    //algoritma

    int NB;

    if(BT == nil){

    NB = 0;

    }

    else

    {

    NB = nBElement(Left (BT)) + 1 + nBElement(Right (BT));

    }

    return NB;

    }

  • #endif

    Program BinTree.c pada dasarnya berisi realisasi dari prosedur maupun tipe bentukan

    yang telah dideklarasikan sebelumnya pada file header BinTree.h. Dalam program ini

    digunakan library stdlib.h dan stdio.h serta digunakan library dengan memanggil file

    header BinTree.h. Pada program ini berisi realisasi prosedur, selector, konstruktor

    maupun predikat yaitu sebagai berikut

    a) BinTree Tree (tipeInfo A, BinTree L, BinTree R);

    BinTree Tree merupakan konstruktor yang digunakan untuk sebagai alokasi

    memori. Adapun alokasi memori dari pointer penjelajah yaitu p = (address)

    malloc (sizeof(node)); dan untuk pengisian akar pada tree digunakan

    struktur percabangan if dimana digunakan untuk mengecek apakah pointer

    kosong atau tidak? (if (p != nil)) Jika iya maka,

    p -> info = A;

    p -> left = L;

    p -> right = R;

    Jika tidak maka, return p (mengembalikan nilai p).

    b) tipeInfo Akar(BinTree BT);

    selector tipeInfo Akar berfungsi untuk mengembalikan nilai / mengirimkan nilai

    atau nilai dari suatu fungsi kepad