Pointer
Pengertian
Pointer
Pointer/penunjuk adalah sebuah variable yang
menunjuk ke alamat variable yang lain. Pointer hanya menyimpan alamat memori
yang berasal dari variabel atau obyek. Kegunaan dari pointer antara lain adalah
untuk menunjuk suatu memori, mendapatkan isi memori, ataupun mengubah isi
memori.
Operator pada Pointer
Cara Declare Pointer
Berikut adalah cara declare pointer
int a;
int *pa;
pa = &a;
p = 10; atau *pa = 10;
Pointer to pointer
Int a=10;
Int *pa, **ppa;
Pa=&a;
Ppa=&pa;
===============================================================
single linked list
untuk membuat linked list, pertama kita harus menentukan node structure-nya.
int value;
struct tnode *next;
Dalam code diatas
dapat disimpulkan bahwa head pointer ke elemen pertama dalam linked list yang
anda buat.
Single linked list: insert
struct tnode *node =
node->value = x;
node->next = head;
head = node;
tanda -> memiliki arti yang sama dengan:
(*node).value=x;
(*node).next = head;
Single linked list: delete
The address operator (&) : Berfungsi untuk mendapatkan alamat memori
yang dituju.
The dereferencing operator (*): Berfungsi untuk
mendapatkan nilai yang dituju.
Cara Declare Pointer
Berikut adalah cara declare pointer
Tipe data
*nama_pointer;
contoh:
int a;
int *pa;
pa = &a;
p = 10; atau *pa = 10;
Pointer to pointer
Dalam
Bahasa C kita dapat memakai
pointer yang menunjuk ke pointer yang lain. Untuk Declare pointer to pointer,
kita tinggal menambahkan jumlah *.
Contoh:
Int a=10;
Int *pa, **ppa;
Pa=&a;
Ppa=&pa;
===============================================================
Array
Pengertian array
Array adalah variabel yang menyimpan kumpulan
data yang memiliki tipe data yang sama.
adi dapat dikatakan bahwa array merupakan kumpulan dari data-data tunggal yang
dijadikan dalam 1 variabel.
Cara deklarasi & akses array
Berikut adalah cara deklarasi & akses array
Sintaks: tipe
nama[size];
Contoh: Int
angka[3];
Angka[0]=3;
Angka[1]=8;
Angka[2]=2;
Menyimpan nilai array
Menyimpan nilai ke dalam array: initialize,
input, assign.
1.
Initialize
Contoh: int marks[5]={3,2,6,8,9}
2.
Input
Contoh: int a, marks[10];
For(i=0;i<10;i++)
Scanf(“%d”,
&marks[i]);
3.
Assign
Int i,
arr1[10],arr2[10];
For(i=0;i<10;i++)
Arr2[i]=arr[i];
Operasi pada array
Berikut macam-macam operasi yang bisa dilakukan
pada array:
1.
Insertion
2.
Traversal
3.
Insertion
4.
Searching
5.
Deletion
6.
Merging
7.
Sorting
=======================================================
Data Structure
Data type
Data type adalah himpunan yang dapat ditemui
pada semua data. Sebagai contoh, tipe data integer mengandung object(contohnya:
,-2,-1,0,1,2….), dan operation(contohnya: +,-,*,/…..).
Structure
Structure adalah user-defined data type yang
menyimpan informasi-informasi yang berkaitan secara bersamaan. Berbeda dengan
array yang hanya bisa menyimpan kumpulan tipe data yang sama, structure dapat
menyimpan kumpulan tipe data yang berbeda-beda.
Cara deklarasi Structure
Berikut contoh cara deklarasi sebuah structure:
Struct murid{
Int
umur;
Char
nama;
Float
nilai;
};
Structure assignment
Tdata a;
a.umur=18;
strcpy(a.nama,”carel”);
a.nilai=85.5;
Data structure
Data structure adalah susunan data. Berikut adalah beberapa
contoh data structure: Arrays, Linked list, queue, stacks, binary trees, dan
lain-lain.
===============================================================
Linked list
Pengertian linked list
Linked list adalah sekumpulan elemen yang
memiliki tipe yang sama. Linked list memiliki urutan tertentu, setiap elemennya
memiliki 2 bagian. Kelebihan linked list adalah karena sifatnya yang dinamis.
Dalam linked list kita juga dapat melakukan insertion dan deletion. Link
terbagi menjadi dua tipe yaitu single linked list, dan double linked list.
Bagian-bagian linked list
Sumber: http://strukdat16061089.blogspot.com/2018/07/linked-list.html
Dari gambar di atas dapat
disimpulkan bahwa setiap node memiliki 2
field.
Memory Allocation: Dynamic
Dalam c/c++ kita dapat melakukan allocate
memory secara dinamik , menggunakan “malloc”, dan menggunakan “free” untuk melakukan
de-allocate.
Contoh:
int *pa = (int *) malloc(sizeof(int));
char *pb = (char *)
malloc(sizeof(char));
*pa = 205;
*pb = ‘A’;
printf( “%d %c\n”, *pa, *pb );
free(pa);
free(pb);
untuk membuat linked list, pertama kita harus menentukan node structure-nya.
struct tnode {
};
struct tnode *head = 0;
Single linked list: insert
struct tnode *node =
(struct tnode*) malloc(sizeof(struct
tnode));
node->value = x;
node->next = head;
head = node;
tanda -> memiliki arti yang sama dengan:
(*node).value=x;
(*node).next = head;
Single linked list: delete
Ketika melakukan delete pada single linked list
ada yang sebaiknya diperhatikan yaitu : jika x ada di head node, atau jika x
tidak ada di head node.
Berikut adalah contohnya: qw
struct tnode *curr = head;
// jika x ada di head note
if ( head->value == x )
{
head = head->next;
free(curr);
}
// jika x tidak ada di head note
else {
while ( curr->next->value != x ) curr =
curr->next;
struct tnode *del =
curr->next;
curr->next = del->next;
free(del);
};
Circular Single Linked List
Dalam circular, node terakhir mengandung
pointer ke node pertama.
Doubly Linked List
Doubly linked list
adalah linked list structure dengan 2 link, yaitu ke data sebelumnya dan ke
data sesudahnya.
https://tutorialspoint.dev/data-structure/advanced-data-structures/xor-linked-list-a-memory-efficient-doubly-linked-list-set-1
struct tnode {
int
value;
struct
tnode *next;
struct
tnode *prev;
};
struct
tnode *head = 0;
struct
tnode *tail = 0;
Circular Doubly Linked List
Circular doubly linked list sama dengan
circular linked list, tetapi total di setiap node adalah 2.
sumber: https://www.geeksforgeeks.org/doubly-circular-linked-list-set-1-introduction-and-insertion/