Jumat, 21 April 2017

tugas pertemuan 4


Pointer Dan Linked List
  1. Jelaskan istilah Pointer dan Link dalam Linked list?
  2. Bagaimana kunjungan (Traversal) terhadap suatu link list?
  3. Buatlah suatu skema Linked-List yang menggambarkan 10 buah abjad terurut, Sajikan skema tersebut ke penyajian dalam memori.
  4. Lakukan penghapusan dua elemen dari soal No.3 di atas, yaitu elemen pertama dan elemen kelima.
  5. Lakukan penambahan elemen di urutan elemen pertama dan ketujuh dari soal No.4 di atas (jadi tidak urut).
  6. Ubah pointer-pointer linknya sehingga data soal No.5 di atas menjadi terurut kembali.
  7. Apa yang dimaksud dengan header linked list dan apa saja jenisnya?
  8. Buat program dengan bahasa pemrograman C++ untuk membuat Mesin linked list yang bisa dilakukan untuk menyisip dan memhapus elemen data.
Jawab

1. Pointer adalah built-in type di C dan C++, dimana C++ mengambil konsep pointer dari C. Pointer sebenarnya sangat terkait dengan “Abstract C Machine”, yaitu model mesin abstrak dimana program C bekerja.
- Linked List adalah struktur data yang ukurannya dinamis, sedangkan Array adalah struktur data yang ukurannya statis(ukuran Array harus ditentukan). Pada Linked List tidak hanya terdapat data yang ingin kita simpan, tapi juga pointer untuk ke elemen selanjutnya.


2. Kunjungan Traversal terhadap suatu link list yaitu dengan operasi kunjungan terhadap node-node dalam pohon dimana masing-masing node akan dikunjungi sekali.

3. 

4. 

5. 


6. 

7. Header linked list merupakan header spesial yang terdiri dari node headernya. Jadi, linked list jenis ini tidak menunjuk pada node pertama (head) namun hanya menyimpan alamat dari node headernya.

8. Program Lingked List

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

struct NODE {
 int number;
 struct NODE *next;
};

void append_node(struct NODE *llist, int num);
int  search_value(struct NODE *llist, int num);
void display_list(struct NODE *llist);


int main(void) {
 int num = 0;
 int input = 5;
 int retval = 0;
 struct NODE *llist;

 llist = (struct NODE *)malloc(sizeof(struct NODE));
 llist->number = 0;
 llist->next = NULL;

while(input != 0) {
  printf("\n===== Pilih Menu =====\n");
  printf("0: Keluar\n");
  printf("1: Insert\n");
  printf("2: Search\n");
  printf("3: Tampilkan\n");
  printf("\nPilihan: ");scanf("%d", &input);

if(input==0){
    printf("...Terimakasih...\n");
}
else if(input==1){
    printf("Anda Memilih: 'Insert'\n");
    printf("Masukkan Nilai Yang Akan di Insert: ");
    scanf("%d", &num);
    append_node(llist, num);
}
else if(input==2){
    printf("Anda Memilih: 'Search'\n");
    printf("Masukkan Nilai Yang Akan di Cari (Search): ");
    scanf("%d", &num);
    if((retval = search_value(llist, num)) == -1)
        printf("Value `%d' not found\n", num);
    else
        printf("Value `%d' located at position `%d'\n", num, retval);
}
else if(input==3){
    printf("Anda Memilih: 'Tampilkan'\n");
    display_list(llist);
}}

 free(llist);
 return(0);
}

void append_node(struct NODE *llist, int num) {
 while(llist->next != NULL)
  llist = llist->next;

 llist->next = (struct NODE *)malloc(sizeof(struct NODE));
 llist->next->number = num;
 llist->next->next = NULL;
}

int search_value(struct NODE *llist, int num) {
 int retval = -1;
 int i = 1;

 while(llist->next != NULL) {
  if(llist->next->number == num)
   return i;
  else
   i++;

  llist = llist->next;
 }

 return retval;
}

void display_list(struct NODE *llist) {
 while(llist->next != NULL) {
  printf("%d ", llist->number);
  llist = llist->next;
 }

 printf("%d", llist->number);
}

Tampilan Output

    Senin, 10 April 2017

    Tugas3 struktur data

    Pemetaan RMO dan CMO Array Dimensi

    Buatlah ilustrasi tabel, Pemetaan RMO dan CMO jalur perpindahan serta hitunglah hasilnya dalam Hexa array-array dibawah ini.
    1. Array long A[5][4][2] dengan nilai awal A[0][1][0] 00AF(H) Berapa nilai A[4][2][1]
    2. Array long A[5][5][2] dengan nilai awal A[1][1][0] 5F(H) Berapa nilai A[4][2][1]
    3. Array long A[5][5][5] dengan nilai awal A[1][1][0] 00AF(H) Berapa nilai A[4][4][2]
    Soal 1
    Terdapat array tiga dimensi dengan long A[5][4][2].
    Diketahui &A[0][1][0]=00AF(H).
    Ditanya &A[4][2][1].

    Tabel array





















    Pemetaan RMO
    1. Hitung perpindahan group 1-0=0
    2. Total perpindahan 1 group banyak baris dikali banyak kolom 5*4=20
    3. Hitung besarnya perpindahan 4-0=4
    4. Dalam 1 baris terdapat 4 kolom sehingga total perpindahan baris 4*4=6
    5. Total perpindahan kolom adalah 2-1=1
    6. Total dari seluruh perpindahan (Group+Baris+Kolom) 20+16+1=37
    Jalur perpindahan

    A[0][2][0]  A[0][3][0]  A[1][0][0]  A[1][1][0]  A[1][2][0]
    A[1][3][0]  A[2][0][0]  A[2][1][0]  A[2][2][0]  A[2][3][0]
    A[3][3][0]  A[3][1][0]  A[3][2][0]  A[3][3][0]  A[4][0][0]
    A[4][1][0]  A[4][1][0]  A[4][3][0]  A[0][0][1]  A[0][1][1]
    A[0][2][1]  A[0][3][1]  A[1][0][1]  A[1][1][1]  A[1][2][1]
    A[1][3][1]  A[2][0][1]  A[2][1][1]  A[2][1][1]  A[2][3][1]
    A[3][0][1]  A[3][1][1]  A[3][2][1]  A[3][3][1]  A[4][0][1]
    A[4][1][1]  A[4][2][1]

    Hasil 00AF(H)+(37(D)*2)
    =(0*163)+(0*162)+(10*161)+(15*160)(D)+74(D)
    =175(D)+74(D)
    =267(D)
    F9(H)

    Pemetaan CMO
    1. Hitung besarnya perpindahan group 1-0=1
    2. Total perpindahan 1 group = banyak baris dikali banyak kolom 5*4=20
    3. Hitung besarnya perpindahan kolom 2-1=1
    4. Didalam kolom terdapat 5 baris sehingga total perpindahan kolom 1*5=5
    5. Total perpindahan baris adalah 4-0=4
    6. Tota; dari seluruh perpindahan (Group+Baris+Kolom) 20+4+5=29
    Jalur perpindahan

    A[1][1][0]  A[2][1][0]  A[3][1][0]  A[4][1][0]  A[0][2][0]
    A[1][2][0]  A[2][2][0]  A[3][2][0]  A[4][2][0]  A[0][3][0]
    A[1][3][0]  A[2][3][0]  A[3][3][0]  A[4][3][0]  A[0][0][1]
    A[1][0][1]  A[2][0][1]  A[3][0][1]  A[4][0][1]  A[0][1][1]
    A[1][1][1]  A[2][1][1]  A[3][1][1]  A[4][1][1]  A[0][2][1]
    A[1][2][1]  A[2][2][1]  A[3][2][1]  A[4][2][1]

    Hasil 00AF(H)+(29(D)*2)
    =(0*163)+(0*162)+(10*161)+(15*160)(D)+58(D)
    =175(D)+58(D)
    =233(D)
    E9(H)

    Soal 2
    Terdapat array tiga dimensi dengan long A[5][5][2].
    Diketahui &A[1][1][0]=5F(H),
    Ditanya &A[4][2][1]

    Tabel array





































    Pemetaan RMO
    1. Hitung besarnya perpindahan group 1-0=1
    2. Total perpindahan 1 group = banyak baris dikali banyak kolom =5*5=25
    3. Hitung bersarnya perpindahan baris 4-1=3
    4. Dalam 1 baris terdapat 5 kolom sehingga total perpindahan baris =3*5=15
    5. Total perpindahan kolom adalah 2-1=1
    6. Total dari seluruh perpindahan (Group + Baris + Kolom) =25+15+1=41

    Jalur perpindahan

    A[1][2][0]  A[1][3][0]  A[1][4][0]  A[2][0][0]  A[2][1][0]
    A[2][2][0]  A[2][3][0]  A[2][4][0]  A[3][0][0]  A[3][1][0]
    A[3][2][0]  A[3][3][0]  A[3][4][0]  A[4][0][0]  A[4][1][0] 
    A[4][2][0]  A[4][3][0]  A[4][4][0]  A[0][0][1]  A[0][1][1] 
    A[0][2][1]  A[0][3][1]  A[0][4][1]  A[1][0][1]  A[1][1][1] 
    A[1][2][1]  A[1][3][1]  A[1][4][1]  A[2][0][1]  A[2][1][1] 
    A[2][2][1]  A[2][3][1]  A[2][4][1]  A[3][0][1]  A[3][1][1] 
    A[3][2][1]  A[3][3][1]  A[3][4][1]  A[4][0][1]  A[4][1][1] 
    A[4][2][1]

    Hasil 5F(H) + (41(D)*2)
    =(5 * 161)+(15 * 160)(D) + 82(D)
    =95(D) + 82(D)
    =177(D)
    B1(H)

    Pemetaan CMO
    1. Hitung besarnya perpindahan group 1-0=1
    2. Total perpindahan 1 group = banyak baris dikali banyak kolom =5*5=25
    3. Hitung bersarnya perpindahan kolom 2-1=1
    4. Dalam 1 kolom terdapat 5 baris sehingga total perpindahan kolom =1*5=5
    5. Total perpindahan baris adalah 4-1=3
    6. Total dari seluruh perpindahan (Group + Baris + Kolom) =25+3+5=33

    Jalur perpindahan

    A[2][1][0]  A[3][1][0]  A[4][1][0]  A[0][2][0]  A[1][2][0]
    A[2][2][0]  A[3][2][0]  A[4][2][0]  A[0][3][0]  A[1][3][0]
    A[2][3][0]  A[3][3][0]  A[4][3][0]  A[0][4][0]  A[1][4][0]
    A[2][4][0]  A[3][4][0]  A[4][4][0]  A[0][0][1]  A[1][0][1]
    A[2][0][1]  A[3][0][1]  A[4][0][1]  A[0][1][1]  A[1][1][1]
    A[2][1][1]  A[3][1][1]  A[4][1][1]  A[0][2][1]  A[1][2][1]
    A[2][2][1]  A[3][2][1]  A[4][2][1]

    Hasil 5F(H) + (33(D)*2)
    = (5 * 161)+(15 * 160)(D) + 66(D)
    = 95(D) + 66(D)
    =161(D)
    A1(H)

    Soal 3
    Terdapat array tiga dimensi dengan long A[5][5][2].
    Diketahui &A[1][1][0]=00AF(H).
    Ditanya &A[4][4][1].

    Tabel array





















    Pemetaan RMO
    1. Hitung besarnya perpindahan group 1-0=1
    2. Total perpindahan 1 group = banyak baris dikali banyak kolom =5*5=25
    3. Hitung bersarnya perpindahan baris 4-1=3
    4. Dalam 1 baris terdapat 5 kolom sehingga total perpindahan baris =3*5=15
    5. Total perpindahan kolom adalah 4-1=3
    6. Total dari seluruh perpindahan (Group + Baris + Kolom) =25+15+3=43

    Jalur perpindahan

    A[1][2][0]  A[1][3][0]  A[1][4][0]  A[2][0][0]  A[2][1][0]
    A[2][2][0]  A[2][3][0]  A[2][4][0]  A[3][0][0]  A[3][1][0]
    A[3][2][0]  A[3][3][0]  A[3][4][0]  A[4][0][0]  A[4][1][0]
    A[4][2][0]  A[4][3][0]  A[4][4][0]  A[0][0][1]  A[0][1][1]
    A[0][2][1]  A[0][3][1]  A[0][4][1]  A[1][0][1]  A[1][1][1]
    A[1][2][1]  A[1][3][1]  A[1][4][1]  A[2][0][1]  A[2][1][1]
    A[2][2][1]  A[2][3][1]  A[2][4][1]  A[3][0][1]  A[3][1][1]
    A[3][2][1]  A[3][3][1]  A[3][4][1]  A[4][0][1]  A[4][1][1]
    A[4][2][1]  A[4][3][1]  A[4][4][1]

    Hasil 00AF(H) + (43(D)*2)
    = (0*163)+(0*162)+(10 * 161)+(15 * 160)(D) + 86(D)
    = 175(D) + 86(D)
    = 261(D)
    105(H)

    Pemetaan CMO
    1. Hitung besarnya perpindahan group 1-0=1
    2. Total perpindahan 1 group = banyak baris dikali banyak kolom =5*5=25
    3. Hitung bersarnya perpindahan kolom 4-1=3
    4. Dalam 1 kolom terdapat 5 baris sehingga total perpindahan kolom =3*5=15
    5. Total perpindahan baris adalah 4-1=3
    6. Total dari seluruh perpindahan (Group + Baris + Kolom) =25+3+15=43
    Jalur perpindahan

    A[2][1][0]  A[3][1][0]  A[4][1][0]  A[0][2][0]  A[1][2][0]
    A[2][2][0]  A[3][2][0]  A[4][2][0]  A[0][3][0]  A[1][3][0]
    A[2][3][0]  A[3][3][0]  A[4][3][0]  A[0][4][0]  A[1][4][0]
    A[2][4][0]  A[3][4][0]  A[4][4][0]  A[0][0][1]  A[1][0][1]
    A[2][0][1]  A[3][0][1]  A[4][0][1]  A[0][1][1]  A[1][1][1]
    A[2][1][1]  A[3][1][1]  A[4][1][1]  A[0][2][1]  A[1][2][1]
    A[2][2][1]  A[3][2][1]  A[4][2][1]  A[0][3][1]  A[1][3][1]
    A[2][3][1]  A[3][3][1]  A[4][3][1]  A[0][4][1]  A[1][4][1]
    A[2][4][1]  A[3][4][1]  A[4][4][1]

    Hasil 00AF(H) + (43(D)*2)
    = (0*163)+(0*162)+(10 * 161)+(15 * 160)(D) + 86(D)
    = 175(D) + 86(D)
    = 261(D)
    105(H)

    Minggu, 02 April 2017

    Tugas Struktur Data Pertemuan 1


    #include <iostream.h>
    #include <conio.h>
    #include <string.h>

    void main()
    {
     char tanya[50]=" what do you from? ";
     clrscr();
     cout<<"kalimat tanya : "<<tanya<<endl;
     strcat(tanya," i’m from Mexico");
     cout<<"kalimat tanya dengan jawaban : "<<tanya<<endl;
     getch();
    }
    *dengan variable di atas menunjukan character pertanyaan sebanyak 50 .
    *maka ketika memulai akan muncul  tulisan “what do you from?”dengan perintah cout maka akan keluar.simpan dengan variabel  tanya
    *maka setelah itu akan keluar “kalimat tanya” dengan menggunakan perintah variabel tanya
    *kemudian keluar dengan fungsi cout” kalimat tanya dengan jawaban:” dengan menggunakan variabel tanya
    *hasil dari output adalah “kaliamat tanya dengan jawaban: what do you from? I’m from ?mexico:”
    Contoh tampilan output














    Soal “Penggabungan Kata”.

    #include <iostream.h>
    main()
    {
     char a1[20];
     char a2[20];
     clrscr();
     cout<<"Masukkan Kata -1= ";
     cin>>a1;
     cout<<"Masukkan Kata -2= ";
     cin>>a2;
     strcat(a1,a2);
     cout<<"Hasil Penggabungannya "<<a1;
     getch();
    }
    *  variabel char dengan nama a1 dengan panjang [20]
    *  variabel char dengan nama a2 dengan panajng[20]
    *maka perintah inputan dengan fungsi cout yaitu “Masukan kata -1=” tersimpan dengan variabel  a1 dengan fungsi cin.contoh “diaz”
    *buat perintah inputan dengan fungsi cout yaitu “Masukan kata -2=”simpan dengan variabel a2 dengan fungsi cin.contoh”diaz ”
    *maka apabila sudah menginput akan keluar  hasil inputan a1 dan a2 dengan perintah strcat
    *cout “Hasil penggabungannya”diaz maldini”

    Contoh tampilan output

    Soal “Penggabungan Kata”.

    #include <string.h>
    #include <conio.h>
    #include <iostream.h>
    main()
    {
     char a1[20];
     char a2[20];
     clrscr();
     cout<<"Masukkan Kata -1= ";
     cin>>a1;
     cout<<"Masukkan Kata -2= ";
     cin>>a2;
     strcat(a1,a2);
     cout<<"Hasil Penggabungannya "<<a1;
     getch();
    }
    * variabel char dengan nama a1 dengan panjang [20]
    *  variabel char dengan nama a2 dengan panajng[20]
    * perintah inputan dengan fungsi cout yaitu “Masukan kata -1=” simpan dengan variabel  a1 dengan fungsi cin.contoh “Diaz”
    *dengan perintah inputan dengan fungsi cout yaitu “Masukan kata -2=”simpan dengan variabel a2 dengan fungsi cin.contoh”Maldini”
    *gabungkan hasil inputan a1 dan a2 dengan perintah strcat
    *cout “Hasil penggabungannya “Diaz maldini”

    Contoh tampilan output
    oal “Pengurangan Hasil Geser Bit”

    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    #include <iostream.h>
    void main()
    {
     int x;
     clrscr();
     cout<<"Masukkan nilai x = "; cin>>x;
     cout<<"Nilai Awal = "<<x<<endl;
     x= x>>1;
     cout<<"Hasil dari Geser 1 Bit Kekiri = "<<x<<endl;
     getch();                              
    }
    * program diatas terdapat variabel denagan tipe int dengan nama x
    *dengan  perintah inputan “Masukan nilai x”dengan perintah cout.simpan pada variabel x dengan fungsi cin
    *maka tampil inputan “Nilai Awal=” dan gabungkan dengan variabel x
    *Tampil hasil "Hasil dari Geser 1 Bit Kekiri = " dengan fungsi  x=x>>1;

    Contoh tampilan output







    Soal “Operasi Logika Not”

    /* Penggunaan Operasi Logika NOT */
    #include <stdio.h>
    #include <conio.h>
    #include <iostream.h>
    main()
    {
     int a,b,c;
     clrscr();
     cout<<"Masukkan Nilai A= " ;cin>>a;
     /*Proses*/
     b=(a+4<10);
     c=!(b);
     cout<<endl<<"Program Ekspresi NOT"<<endl;
     cout<<"Nilai A= "<<a<<endl;
     cout<<"Nilai B= (a+4<10) = "<<b<<endl;
     cout<<"Nilai C= !(b)= "<<c;

     getch();
    }

    Buat variabel a,b,c dengan type int
    Masukan Nilai A, contoh “2 dengan perintah cout
    Untuk nilai B didapat dari, jika nilai A +  4 hasilnya kurang dari 10, maka nilainya B adalah “1”dan selain itu nilainya “0” dengan perintah cout mengunakan fungsi “ (a+4<10)” dan variabel b
    Untuk nilai C didapat dari nilai B kurang dari sama dengan “0”. Dengan perintah cout menggunakan fungsi “ Nilai C= !(b)=”  dan variabel  c
                  Contoh tampilan output

    Soal “Perkalian”

    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
     int a,x,y;
     clrscr();
     cout<<"Masukkan Nilai X = "; cin>>x;
     cout<<"Masukkan Nilai Y = "; cin>>y;
     a=x*y;
     cout<<"\n";          
     cout<<"Hasil dari "<<x<<"^"<<y<<"="<<a<<endl;
     getch();
    }
    Buat variabel a,x,y dengan type int
    Masukan nilai x, contoh “2 dengan fungsi cout simpan pada variabel x
    Masukan nilai y, contoh “4” dengan fungsi cout simpan pada variabel y
    Gnakan fungsi “a=x^y” untuk menampilkan hasil  x ^ y pada variabel a

    Contoh tampilan output