Rabu, 30 Mei 2018

Struktur Data Queue (Antrian)

Queue (Antrian)



 




pilihan 1 yaitu Equeue disini merupakan untuk memasukkan data. data yang dimasukkan adalah 4,5,6.

jika kita pilih angka 2 yaitu Dequeue untuk mengambil dan menampilkan data yang terdepan. Maka akan muncul angka 4. Karena angka 4 adalah data yang pertama dimasukkan.

Jika kita pilih angka 3 yaitu print, maka akan menampilkan seluruh data yang telah dimasukkan. kenapa angka 4 tidak muncul, karena angka 4 telah dipanggil terlebih dahulu dengan cara pilih 2 yaitu Dequeue.

terakhir dengan memilih angka 5 yaitu Clear maka semua data telah dikosongkan atau dihapus.







sumber : https://youtu.be/feyggOhqoig

FSM game


FSM 



FSM Pseudocode :

Baca Konfigurasi 
If Konfigurasi = Default then
                 Set Lawan = Komputer
                 Set Level = Level
                 Set Timer = Timer
Else
                 Set Pemain berdasarkan Konfigurasi
End If
                 Inisialisasi Papan
                 Hapus History


Proses Konfigurasi 
Tampilkan Form Konfigurasi
Input Pemain
If Pemain Black = Komputer
             Input Level
             Input Timer
Else
             Set Pemain = Manusia
                Else If Pemain White = Komputer 
                      Input Level
                      Input Timer
                  Else
                       Set Pemain = Manusia
                           Else If Pilih = Ok
                               Set Konfigurasi Permainan
                            Else
                                Tutup Form Konfigurasi
                            End If
                   End If
End If

Selasa, 01 Mei 2018

Struktur Data Linked List

Senarai Berantai (Linked List)

1. Pengertian Linked List :
Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian Linked list juga merupakan suatu cara untuk menyimpan data dengan struktur sehingga dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data yang diperlukan. 

2. Jenis-jenis Linked List :
    

Single Linked List

Single Linked List merupakan suatu linked list yang hanya memiliki satu variabel pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya. Biasanya field pada tail menunjuk ke NULL.
Contoh codingnya :
struct Mahasiswa{
      char nama[25];
      int usia;
      struct Mahasiswa *next;
}*head,*tail;

Double Linked List

Double Linked List merupakan suatu linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke NULL.
Contoh Codingnya :
struct Mahasiwa{
     char nama[25];
     int usia;
     struct Mahasiswa *next,*prev;
}*head,*tail;

Circular Double Linked List
Merupakan double linked list yang simpul terakhirnya menunjuk ke simpul terakhirnya menunjuk ke simpul awalnya menunjuk ke simpul akhir sehingga membentuk suatu lingkaran.
Operasi-Operasi yang ada pada Linked List :
–        Insert
Istilah Insert berarti menambahkan sebuah simpul baru ke dalam suatu linked list.
–        IsEmpty
Fungsi ini menentukan apakah linked list kosong atau tidak.
–        Find First
Fungsi ini mencari elemen pertama dari linked list
–        Find Next
Fungsi ini mencari elemen sesudah elemen yang ditunjuk now
–        Retrieve
Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu dikembalikan oleh fungsi.
–        Update
Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu.
–        Delete Now
Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalahelemen pertama dari linked list (head), head akan berpindah ke elemen berikut.
–        Delete Head
Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.
–        Clear
Fungsi ini menghapus linked list yang sudah ada. Fungsi ini wajib dilakukan bila anda ingin mengakhiri program yang menggunakan linked list. Jika anda melakukannya, data-data yang dialokasikan ke memori pada program sebelumnya akan tetap tertinggal di dalam memori.

3. Beberapa Jenis yang operasi yang terdapat didalamnya 
a. Insert
Istilah insert berarti menambahkan sebuah simpul baru kedalam suatu Linked List.
b. Isempty
Fungsi ini menentukan apakah Linked List kosong atau tidak.
c. Find First
Fungsi ini mencari elemen pertama pada Linked List.
d. Find Next
Fungsi ini mencari elemen sesudah elemen yang ditunjuk now.
e. Retrieve
Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu dikembalikan oleh fungsi.
f. Update
Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu.
g. Delete Now
Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalah elemen pertama dari Linked List (head), head akan berpindah pada elemen berikut.
h. Delete Head 
Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.

4. Algoritma dan Contoh program untuk operasi didalamnya.

CONTOH PROGRAM :
#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);
}

SUMBER :