Variabel Lokal
Variable Global
Jika variabel statis bersifat lokal, maka hanya dikenal
dalam fungsi tersebut saja.
Jika variabel statis bersifat global, maka dikenal di
seluruh program
Inisialasisai hanya dilakukan sekali, yaitu pada saat
fungsi dipanggil pertama kali.
Adalah variabel yang memiliki nilai tetap, artinya
nilai dari variabel tersebut akan tetap diingat oleh program, sehingga dapat digunakan untuk menyimpan state nilai pada saat pemanggilan fungsi berikutnya.
Nilai variabel statis akan bernilai sama dengan nilai
Penggunaan record dalam jumlah yang
banyak alokasi memory konvensional tidak bisa diandalkan.
Misal kita akan bekerja dengan fle yang
menyimpan sangat banyak record, di mana setiap record juga memiliki banyak feld.
- Menampilkan record - Menambahkan record - Menghapus record
Dibutuhkan suatu rantai data yang panjang
dan saling berhubungan.
Rantai data tersebut harus mampu
menampung semua data yang kita miliki.
Penggunaan array saja jelas tidak bisa,
karena kita bekerja dengan barisan data heterogen.
Penggunaan Struct (Array of Struct) juga
belum mencukupi.
Kita tidak mungkin akan melakukan alokasi
Solusi yang lebih baik adalah menggunakan
Secara teori, linked list adalah sejumlah
node yang dihubungkan secara linier dengan bantuan pointer.
Untuk implementasi Linked List, kita harus
memahami Struct dan pointer terlebih dahulu.
Penggunaan struct memungkinkan kita
#include <stdio.h>
struct Test test1; test1.x = 10;
test1.c = ‘A’;
printf(“Isi dari test1.x: %d\n”, test1.x);
printf(“Isi dari test1.c: %c\n”, test1.c);
Struct adalah salah satu dasar
Memesan memory secara konvensional misal char s[10000], namun sayangnya, kita akan kehilangan kebebasan untuk mendealokasikan memory yang sudah tidak terpakai.
Pengalokasian memory secara dinamis dapat dilakukan dengan salah satu fungsi alokasi memory yaitu malloc().
Fungsi ini dideklarasikan di dalam header
stdlib.h. Dengan demikian, jangan lupa untuk meng-include header tersebut.
Fungsi ini ini akan meminta memory
sebanyak size bytes, dan apabila sukses, pointer ke lokasi memory yang dipesan akan dikembalikan.
Apabila gagal, fungsi ini akan
mengembalikan NULL.
Fungsi ini dideklarasikan di dalam header
stdlib.h. Dengan demikian, jangan lupa untuk meng-include header tersebut.
Fungsi ini akan membebaskan memory
Sebagai contoh, kita akan mengalokasikan array of character sejumlah 50000 buah secara dinamis.
kita memesan memory sejumlah 50000 kali
ukuran char dan kita melakukan typecasting ke bentuk char *.
#include <stdio.h> #include <stdlib.h> int main()
{
char *s = (char *) malloc (50000 * sizeof (char));
#include <stdio.h>
struct Test * test1 = (struct Test
*) malloc (sizeof (struct Test));
test1 -> x = 10; test1 -> c = ‘A’;
printf(“Isi dari test1->x: %d\ n”,
test1->x);
1. Seperti contoh terdahulu, kita
mendeklarasikan Struct Test.
2. Kita memesan memori secara dinamis yang
akan digunakan oleh struct test1. Kita memesan sejumlah ukuran Struct Test, dan hasilnya akan digunakan untuk menyimpan test1.
3. Apabila sebelumnya kita menggunakan
Secara teori, linked list adalah sejumlah
node yang dihubungkan secara linier dengan bantuan pointer.
Dikatakan singly (single) linked apabila
hanya ada satu pointer yang menghubungkan setiap node.
Setiap node akan berbentuk struct dan
Kita akan mulai dengan deklarasi struct
untuk node.
variabel next ini akan menghubungkan kita
dengan node di sebelah kita, yang juga bertipe struct tnode.
Hal inilah yang menyebabkan next harus
bertipe struct tnode.
struct tnode {
int x;
Selanjutnya, kita akan mendeklarasikan
beberapa variabel pointer bertipe struct tnode.
Beberapa variabel tersebut akan kita
gunakan sebagai awal dari linked list, node aktif dalam linked list, dan node sementara yang kita gunakan dalam pembuatan node di linked list. Berikan nilai awal NULL kepada mereka.
struct tnode *head=NULL, *curr=NULL,
Node yang dibuat pertama akan menjadi
int i; nilai dari 0 sampai 4. Pembuatan node dilakukan dengan fungsi malloc().
Setelah itu, kita perlu membuat node dan penghubung. Pertama-tama, kita akan menguji apakah head bernilai (curr), juga kita
Sekarang, bagaimana kalau head tidak
bernilai NULL alias kita telah memiliki satu
atau lebih node? Yang pertama kita lakukan
adalah menghubungkan pointer next dari
node aktif (curr) ke node yang baru saja
kita buat.
Dengan demikian, kita baru saja
membuat penghubung antara rantai lama
dengan mata rantai barucurr -> next = NULL;
curr = head;
while (curr != NULL) {
Pertama-tama, kita meletakkan node aktif (curr) ke posisi head. Setelah itu, kita akan
pindahkan kunjungi satu per satu node dengan
memindahkan node aktif (curr) ke posisi sebelahnya.
Semua kunjungan tersebut
#include <stdio.h>
struct tnode *next; };
struct tnode *head=NULL, *curr=NULL, *node=NULL; int i;
for (i=0; i<5; i++) {
node = (struct tnode *)
malloc (sizeof(struct tnode)); node -> x = i;