summery

summery

apa itu linked list?

linked list adalah struktuer data yang terdiri dari urutan record data dimana setiap record memiliki field yang menyimpan alamat dari record selanjutnya elemen yang dihubungkan linked kepada linked list disebut node. pada linked list terdapat istilah seperti head dan tail, head adalah elemen yang bearada di posisi pertama pada linked list sementara tail adalah elmen yang berada di posisi terakhir  pada 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. field tail biasanya menunjuk ke NULL.



contoh:
struct Peserta
{
      char nama[25];
      int usia;
      struct Peserta *next;
}*head,*tail;

Double Linked List
Double Linked lList merupakan suatu linked list yang memiliki dua variabel pointer. Pointer yang satu menunjuk ke node selanjutnya dan yang satu lagi ke node yang sebelumnya. head dan tailnya juga menunjuk ke NULL.

contoh:
struct Peserta
{
      char nama[25];
      int usia;
      struct Peserta *next,*prev;
}*head,*tail;

Circular Linked List
Circular Linked List mirip seperti single Linked List tetapi atau Double Linked list namun node terakhir menunjuk ke node pertama.

Multiple Linked List
Multiple Linked List merupakan suatu linked list yang memiliki lebih dari dua variabel pointer.

Mempelajari bagaimana cara penggunaan push.

Push

Dalam Linked List ada beberapa tipe push yaitu push depan, push tengah dan push belakang.

-Push depan

push depan merupakan penyisipan di akhir list, sehingga pointer tail berpindah ke elemen baru.
contoh:

void pushHead(int nim, char nama[])
{
struct tnode *node = (struct tnode *) malloc(sizeof(struct tnode));
node->nim = nim;
strcpy(node->nama, nama);
if(head == NULL)
{
head=tail=node;
}
else
{
node->next = head;
head = node;
}
}//void untuk tambahin ke depan

-Push belakang

push belakang merupakan penyisipan di awal list, sehingga pointer head akan berpindah ke elemen baru.
contoh:

void pushTail(int nim, char nama[])
{
struct tnode *node = (struct tnode *) malloc(sizeof(struct tnode));
node->nim = nim;
strcpy(node->nama, nama);
if(head == NULL)
{
head=tail=node;
}
else
{
tail->next = node;
tail = node;
tail->next = NULL;
}
}//void untuk tambahin ke belakang

-Push tengah

push tengah merupakan penyisipan di tengah-tengah list.
contoh:

void pushMid(int a,int nim, char nama[])
{
struct tnode *node = (struct tnode *) malloc(sizeof(struct tnode));
node->nim = nim;
strcpy(node->nama, nama);
tnode *mid=head;
int loop = 1;
while(loop<=a-1)
{
mid=mid->next;
loop++;
}
if(head == NULL)
{
head=tail=node;
}
else
{
node->next = mid->next;
mid->next = node;
}
}//void masukin di tengah(angka urutan masukin sendiri)

Hashing Table dan Binary Tree

1. Hash Table

Hash Table adalah sebuah struktur data yang terdiri atas sebuah tabel dan fungsi yang bertujuan untuk memetakan nilai kunci yang unik untuk setiap record (baris) menjadi angka (hash) lokasi record tersebut dalam sebuah tabel. Keunggulan dari struktur hash table ini adalah waktu aksesnya yang cukup cepat, jika record yang dicari langsung berada pada angka hash lokasi penyimpanannya. Akan tetapi pada kenyataannya sering sekali ditemukan hash table yang record-recordnya mempunyai angka hash yang sama (bertabrakan).





operasi pada hash table:

  • insert: diberikan sebuah key dan nilai, insert nilai dalam tabel
  • find: diberikan sebuah key, temukan nilai yang berhubungan dengan key
  • remove: diberikan sebuah key,temukan nilai yang berhubungan dengan key, kemudian hapus nilai tersebut
  • getIterator: mengambalikan iterator,yang memeriksa nilai satu demi satu
contoh:

struct hashnode_s {
char *key;
void *data;
struct hashnode_s *next;
};

2. Binary tree

Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus terpisah. Sesuai dengan definisi tersebut, maka tiap node dalam binary tree hanya boleh memiliki paling banyak dua child.


contoh:

struct node {
  int data;
  struct node *left;
  struct node *right;
};


Binary Search Tree
Tree adalah salah satu bentuk struktur data yang menggambarkan hubungan hierarki antar elemen-elemennya. Sebuah nide dalam tree biasanya memiliki beberapa node lagi sebagai percabngan atas dirinya.

Lalu ada yang namanya Binary Tree. Sebenarnya binary tree mirip dengan tree. hanya saja, kita akan mengambil sifat bilangan biner yang selalu bernilai 1 atau 0 (2 pilihan). binary tree mempunyai maksimal 2 percabangan

Binaryb Search Tree adalah struktur data yang mengadopsi knsep binary tree namun terdapat aturan bahwa setia child node sebelah kiri lebih kecil dari pada root node dan child node sebelah kanan harus lebih besar dari root node. tujuan dari membedakan nilai kiri dan kanan adalah untuk memberikan efisiensi terhadap proses searching

aturan dari Binary Search Tree:


  • Sertiap child node sebelah kiri harus lebih kecil daripada root nodenya 
  • Sertiap child node sebelah kanan harus lebih besar daripada root nodenya
Source: https://www.mahirkoding.com/struktur-data-binary-search-tree-bst/
https://saragusti22.wordpress.com/2015/05/04/pengantar-struktur-data-tree-dan-binary-tree/

Comments