cari artikel di blog ini

Kamis, 16 Juni 2011

variabel memori, array, dan argumentasi

Variabel Memori

Variabel merupakan komponen penting pada pemrograman, Variabel digunakan dalam program untuk menyimpan suatu nilai atau data, dan nilai yang ada padanya dapat dirubah selama eksekusi program berlangsung.
Jika suatu variable diisi dengan nilai di luar jangkauannya maka nilai yang akan disimpan akan diubah sesuai dengan jangkauannya. Misalnya, bila suatu variable bertipe integer diberi nilai 75000, yang tersimpan pada variable tersebut berupa 9494. Sebab nilai positif terbesar pada tipe integer yaitu 32767. Hal ini bekerja sebagaimana speedometer pada kendaraan bermotor. Pada spedometer, apabila nilai maksimumnya terlampaui akan dimulai dari nilai terendahnya, yakni nol

Komponen sebenarnya juga ditampung dalam variable seperti yang anda
maksud, jadi dalam contoh ada 2 set variable, variable adsMain & dsMain
Dan variable VDataset & VDataSource. Yang membedakan kedua set variable
ini adalah untuk variable adsMain dan dsMain, dia akan menempati memori
lebih banyak karena berisi instance dari kelas tersebut. Sedangkan pada
variable VDataset & VDatasource, hanya berisi Alamat yang menunjuk ke
Alamat dari instance kelas diatas tadi. Jadi akan menempati memori lebih
sedikit. Tapi memang kedua variable ini pastinya menempati Alamat memori
yang berbeda.

ARRAY

Array adalah sekelompok data sejenis yang disimpan ke dalam variabel dengan nama yang sama, dengan memberi indeks pada variabel untuk membedakan antara yang satu dengan yang lain.

VARIABEL ARRAY

nama_variabel[indeks]

ketentuan nama variabel arrray sama dengan nama variabel biasa.

indeks menunjukkan nomor dari variabel .

DEKLARASI VARIABEL ARRAY

BU : tipe nama_variabel[indeks];

Contoh : float bil[10];

Deklarasi variabel array dengan nama bil yang akan menampung 10 data yang bertipe float. Indeks 10 menunjukkan variabel bil terdiri dari 10 elemen, dimana setiap elemen akan menampung sebuah data.

Indeks array dimulai dari nol(0) , sedang nomor elemen biasanya dimulai dari satu(1). Nomor elemen dapat dibuat sama dengan nomor indeks untuk mempermudah pembuatan program yaitu dengan memberi indeks satu lebih banyak dari jumlah data yang dibutuhkan, sehingga menjadi :

float bil[11]

INISIALISASI ARRAY 1 DIMENSI

Inisialisasi dapat dilakukan bersama dengan deklarasi atau tersendiri. Inisialisasi suatu array adalah dengan meletakkan elemen array di antara tanda kurung kurawal {}, antara elemen yang satu dengan lainnya dipisahkan koma.

int bil[2] = {4,1,8}

bil[0] = 4

bil[1] = 1

bil[2] = 8

Senin, 23 Mei 2011

perkembangan komputer serta penerapan di bidang elektronik

Perkembangan komputer untuk mencapai keadaan yang sekarang memerlukan proses yang sangat amat panjang. Berikut ulasan tahapan yang dapat menerangkan hal tersebut:

1. Generasi Pertama Perkembangan Komputer

Pada tahap pertama ini, perkembangan komputer mendapatkan faktor dorongan positif dari meletusnya perang dunia ke-dua. Dengan kata lain, pihak militer yang berperang sadar betul bahwa dengan mengadakan riset terhadap komputer maka akan mendatangkan kemajuan teknologi untuk suatu kemenangan perperangan. Mereka sadar betul dengan kemampuan potensial yang dimiliki oleh komputer. Oleh karena itu pada masa itu banyak tersedia dana yang sengat berlimpah untuk penelitian perkembangan komputer.

Dampak dari tersedianya dana yang melimpah ini sangat signifikan, hal ini terlihat dengan ditemukannya jenis komputer yang diberi nama “K3″ untuk mendesain pesawat dan peluru kendali, oleh konrad Zuse, 1941 seorang ilmuwan Jerman. Kemudian tak mau kalah imuwan Inggris pada tahun 1943 dengan tujuan untuk mengalahkan Jerman, berhasil menemukan mesin komputer yang diberi nama Colossus yang didesain untuk memecahkan kode-kode sandi dari tentara Jerman. Colossus inilah merupakan salah satu alat penting yang menjadi modal kemenangan Sekutu atas Jerman pada perang dunia II. Namun sayangnya lahirnya Colossus tidak berpengaruh besar terhadap perkembangan dunia komupeter waktu itu, hal ini disebabkan oleh sifat karakterisitik dari Colossus itu sendiri yang bersifat tidak komputer serba-guna (general purpose computer) yang dimana hanya dirancang untuk memecahkan kode-kode rahasia Jerman dan kerahasian keberadaannya dijaga hampir satu dekade karena alasan keamanan untuk mencegah meletusnya perang kembali.

Dari pihak Amerika terus melakukan penelitian komputer untuk terus tetap berkembang. Pada tahun 1900 s.d 1973, seorang insinyur dari Harvard Howard H. Aiken dengan bekerja sama dengan IBM berhasil menciptakan kalkulator elektronik dengan panjang setengah lapangan bola kaki dan mempunyai panjang kabel total 500 mil untuk proyek US Navy yang diberi nama Mark I.

Setelah Mark I lahir, kemudian tercipta komputer yang bersifat serba guna (general purpose computer) yang dibuat oleh John Presper Eckert (1919-1995) dan John W.Mauchly (1907-1980) yang diberi nama ENIAC. ENIAC berhasil dibuat dengan prakarsa kerja-sama Amerika Serikat dan University of Pennsylvania. ENIAC sendiri merupakan kepanjangan dari Electronic Numerical Integrator and Computer. ENIAC dapat bekerja dengan kecepatan 1000 kali lebih cepat dibandingkan dengan Mark I.

Walaupun Colossus tidak boleh disentuh, beberapa penelitian tidak berhenti sampai disitu! Diawali pada pertengahan tahun 1940, tim University of Pennsylvania dan John von Neumann (1903-1957) memiliki konsep besar untuk memproduksi komputer dengan kapasitas yang dapat digunakan dalam 40 tahun ke-depan! Dari kerja-sama tim ini terciptalah pada akhit tahun 1945, komputer yang diberi nama Electronic Discrete Variable Automatic Computer(EDVAC). Inti besar dari nilai potensial keberhasilan dari EDVAC adalah adanya unit pemrosesan sentral (CPU). Hal ini membuat komputer dapat dikontrol dan dikendalikan dengan sumber tunggal. Selain itu EDVAC memiliki memori untuk menampung program ataupun data. Sehingga hal ini memungkinkan komputer untuk dapat berhenti pada suatu waktu tertentu dan kemudian dapat dapat diatur untuk dapat melanjutkannya kembali. EDVAC mendorong tumbuhnya industri komputer komersial, oleh karena itu tak heran pada tahun 1951, lahirlah merek UNIVAC I (Universal Automatic Computer I) menjadi komputer komersial pertama yang memanfaatkan prinsip kerja EDVAC, yang dilakukan oleh Remington Rand.

Dari uraian diatas terlihat bahwa perkembangan komputer generasi pertama umumnya dirancang untuk mengerjakan suatu tugas spesifik tertentu dimana hal ini dicirikan dengan adanya program kode-biner yang sangat berbeda (machine language). Hal ini membuat sistem kerja generasi komputer pertama sangat dibatasi. Kemudian komputer dari generasi pertama biasanya terdapat penggunaan tube vakum (sehingga membuat ukuran komputer sangatlah besar) dan untuk penyimpanan datanya menggunakan silinder magnetik.

2. Generasi Ke-dua Perkembangan Komputer

Pada tahap ini sangat dipengaruhi dengan adanya penemuan transistor pada tahun 1948. Dengan adanya penemuan transistor ini sangat mempengaruhi untuk menggantikan fungsi tube vakum dalam televise, radio, dan tentunya pada komputer. Secara resmi transistor mulai digunakan di dalam komputer sejak tahun 1956. Hal ini sangat mempengaruhi dari hasil ukuran sebuah komputer dibandingkan jika masih menggunakan tube vakum. Pengecilan ukuran komputer semakin dipercepat dengan adanya penemuan lainnya seperti perkembangan dan pengembangan memori inti magnetik. Beberapa produk yang menggunakan teknologi ini adalah komputer produksi IBM dengan skema peluncuran bertahap seperti Strecth dan tak mau kalah Sprery-Rand membuat komputer bernama LARC dll. Perkembangan komputer dengan tujuan komersial semakin terlihat di tahun 1960, dengan ditandainya suksesnya bermunculan komputer untuk di bidang bisnis, pemerintahan dan pendidikan. Pada saat itu juga bermunculan aksesoris pendukung seperti printer, disket, program dll.

Perkembangan yang dipaparkan pada paragraph sebelumnya juga turut mendukung untuk lahirnya bahasa pemograman yang dapat dipelajari seperti FormulaTranslator (FORTRAN) dan Common Business-Oriented Language (COBOL). Industi komputer mulai berkembang pesat pada masa perkembangan komputer generasi ke-dua. Selain itu pada masa ini juga merupakan awal untuk munculnya bidang kerja baru seperti ahli sistem komputer, programer (ahli program) dan analisis data.

3. Generasi Ke-tiga Perkembangan Komputer

Inti dari pada tahap generasi ke-tiga adalah pada tahun 1958 ditemukannya IC (Intergrated Circuit). Penemuan IC dilatarbelakangi oleh tidak puasnya pada kerja transistor dimana ketika digunakan didalam komputer akan menghasilkan panas yang sangat besar sehingga dapat merusak komponen yag lainnya. IC terbuat dari quarsa rock (batu quarsa) yang ditemukan oleh seorang ilmuwan ahli instrument dari Texas, Jack Kilby. Hal ini-pulalah yang mendorng penemuan-penemuan penting sehingga suatu chip dapat mewakili beberapa komponen yang dibutuhkan oleh komputer. Akibatnya komputer terlihat lebih bersahabat dan nyaman ketka digunakan karena ukurannya yang semakin mengecil.

4. Generasi Ke-empat Perkembangan Komputer

Untuk perkembangan komputer pada generasi ini mungkin sudah dapat disekitar lingkungan kita. Penemuan IC yang spektakuler sebelumnya membuat perkembangan dunia komputer berkembang dengan pesat. Hal ini dengan ditandai dengan ditemukan komponen yang lebih unggul dibandingkan IC beserta turunannya.

Komponen yang dimaksud adalah seperti dengan berhasil diproduksinya suatu komponen yang dapat mewakilki beberapa komponen (kapasistanya lebih unggul dari pada IC) yaitu Large Scale Integration (LSI) dimana dapat memuat ratusan komponen dalam hanya sebuah chip. Tak selang berapa lama (1980) kemudian juga ditemukan produk turunannya yaitu 1980-an, Very Large Scale Integration (VLSI) yang memiliki kemampuan luar biasa untuk dapat memuat ribuan komponen hanya dalam sebuah chip tunggal. Dan mungkin Ultra-Large Scale Integration (ULSI) yang memiliki kemampuan yang lebih luar biasa untuk dapat meningkatkan jumlah tersebut menjadi jutaan.

Dengan adanya penemuan diatas diharapkan akan berdampak pada penekanan biaya pembuatan komputer sehingga harga komputer-pun akan semakin lebih murah dan terjangkau oleh masyarakat tingkat menengah ke bawah. Salah satu contoh produk dipasaran yang mungkin sering pernah kita dengar sampai sekarang adalah Chip Intel 4004 yang dibuat pada pertengahan tahun 1971. Hal ini lah awal mulanya komputer dibuat dan disain untuk keperluan komersial yang dapat terjangkau untuk semua pihak.

5. Generasi Ke-lima Perkembangan Komputer (Komputer Masa Depan)

Baik, pada perkembangan komputer untuk masa ke-lima ini memang sangat susah. Karena masih dalam sebatas imajinasi. Mungkin bagi Anda yang membaca tulisan ini pernah menonton film berjudul “2001:Space Odyssey” karya dari Arthur C. Clarke. Dalam film tersebut merupakan gambaran komputer masa depan yang mungkin masih dalam imajinasi dalam pikiran kita. Dalam film tersebut komputer dapat diprogram sehingga dapat mendekati pemikiran manusia. Yang lebih parah dalam film tersebut komputer mampu untuk memprogram dirinya sendiri sehingga bisa saja mungkin pemikirannya mengalahkan pemikiran manusia.

Meskipun gambaran visual yang ditayangkan dalam komputer tersebut masih jauh dari pemikiran kita dan realita, namun tanda-tanda untuk mewujudkan itu semua sudah terlihat. Sejauh ini telah ada komputer yang dapat diprogram untuk dapat merespon printah secara lisan maupun nalar manusia.

Dewasa ini telah banyak kemajuan teknologi untuk mendukung perkembangan teknologi komputer. Diantaranya telah ditemukannya kemampuan pemrosesan parallel dimana direncanakan untuk menggantikan model non Neumann! Dimana sistem pemrosesan parallel itu akan mampu bekerja mengkoordinasikan banyak CPU untuk secara serempak. Selain itu juga telah ditemukan teknologi superkonduktor, sehingga dapat menghantarkan informasi lebih cepat dibandingkan dengan teknologi yang digunakan sebelumnya. Apapun yang terjadi, yang jelas secanggih apapun kemampun sebuah komputer tidak akan bisa mengalahkan kemampuan yang membuatnya, yaitu pikiran manusia.


PENERAPAN DI BIDANG ELEKTRONIKA

• Kecepatan dan ketepatan komputer sangat bermanfaat dalam pengolahan data padaaplikasi teknik

Para ahli nuklir dapat membuat model reactor nulkir pada layar komputer, tidak perlu membuat model yang sebenarnya. Kondisikondisi yang diperlukan pada reaktor nuklir dapat diprogram, dan dapat dicoba diberikan data yang melampaui batas keamanan reactor tersebut.

• Komputer dapat juga digunakan untuk membuat model molekul-molekul, yang dapat ditampilkan secara grafik pada layar komputer. Melalui grafik ini, ahli kimia dapat mengamati bagaimana molekul-molekul tersebut bereaksi dengan yang lainnya.

• Komputer juga dapat dipergunakan pada bidang geologi untuk mempelajari keadaan tanah serta contour dari suatu daerah

• Aplikasi yang lain dari komputer dalam bidang teknik adalah computer aided design

tenik sorting dan searching

Teknik sorting

Sorting (Pengurutan) merupakan proses penyusunan atau pengurutan sekumpulan data yang acak menjadi tersusun urut. Pengurutan dapat dilakukan secara terurut naik (ascending) atau terurut turun (descending). Tujuan pengurutan adalah mendapatkan kemudahan dalam pencarian anggota dari suatu himpunan disamping dapat mempercepat mengetahui data terbesar dan terkecil. Beberapa teknik dalam Sorting :


1. Bubble Sort


Mengurutkan data dengan cara membandingkan dua data yang letaknya

berdekatan. Misalnya ada susunan data berikut :

index :

0

1

2

3

4

5

----------------------------------------------

Data :

2

20

13

15

5

45

Dua data yang letaknya berdekatan, 2 dan 20 akan dibandingkan pertama kali. Hasilnya, data yang terendah akan ditaruh di index pertama. Kemudian membandingkan index ke-dua dengan ke-tiga, data yang terendah dari perbandingan itu ditaruh di index ke-dua, dan begitu seterusnya.


2. Selection Sort


Dalam teknik ini pengurutan dilakukan dengan cara mencari data terkecil

atau terbesar dari index awal sampai akhir kemudian ditukar posisinya.


3. Insertion Sort (Penyisipan)


Pengurutan dengan metode penyisipan dimulai dari data kedua, kemudian disisipkan pada tempat yang sesuai. Data pada posisi pertama diandaikan memang sudah pada tempatnya. Jadi pengurutan mulai dari membanding nilai data ke-2 dengan data sebelumnya, kemudian mencari posisi yang tepat untuk disisipkan.

Contoh program sorting :

// listing program contoh sorting

// (Bubble sort, selection sort dan insertion sort)

#include

#include
int data[100], data2[100], jumlah, i, j;
void input()

{cout<<"jumlah data:"; cin >>jumlah;

for (i=0 ; i

{cout<<"data ke- "<<<" = "; cin>>data[i];

data2[i]=data[i];

}}void tukar(int a, int b)

{int temp;

temp=data[b]; data[b]=data[a];data[a]=temp;

}void bubble()

{ for (i=1;idata[j+1])
{ tukar(j+1,j);

}

}

}cout<<"Bubble sort telah selesai.."<

}void selection()

{ int posisi;
for (i=0; i

posisi=i;
for (j=i+1; j< data[posisi]) posisi =j;
}

if (posisi != i) tukar (posisi, i);

}cout<<"Selection sort telah selesai..."<

}void insertion()

{int temp, i, j ;

for (i=1;i

{ temp= data[i];
j = i-1 ;
while (data[j]>temp && j>=0)

{

data[j+1] = data[j];

j--;

}
data[j+1]=temp;
}cout<<"Insertion Sort telah selesai..."<

}void tampil()

{cout<<"Data = ";

for (i=0;i

{

cout<<<" ";

}cout<

}void acak()

{

for(i=0; i<<"Data sudah diacak kembali..."<

}main()

{ int pilihan;
do
{cout<<"1. Input data\n";

cout<<"2. Bubble sort\n";
cout<<"3. Selection Sort\n";
cout<<"4. Insertion sort\n";
cout<<"5. Tampil data\n";

Teknik Searching

Searching adalah satu ketrampilan penting yang harus dikuasai oleh siapapun yang senantiasa bersinggungan dengan dunia IT. Dengan ketrampilan yang satu ini, maka pada prinsipnya apapun yang kita inginkan dari dunia maya bisa kita dapatkan. Hanya saja ketrampilan ini tidak banyak diperhatikan oleh setiap orang. Khususnya lagi oleh para mahasiswa.

Seringkali saya merasa kecewa karena tugas-tugas yang saya berikan dalam katagori literatur survey (misalnya dalam matakuliah kapita selekta multimedia) tidak sesuai dengan apa yang saya harapkan. Ditambah lagi dengan minimnya kemampuan berbahasa inggris, maka hasil searching dari mahasiswa umumnya berbahasa indonesia.

Saya sendiri memahami teknik-teknik searching ini step by step. Walaupun ada buku yang mengupas tentang ini (kalau tidak salah bukunya pak Eko Indrajit terbitan Andi Offsett) namun tidak sempat membaca dan mempraktekkannnya. Ok, berikut ini sebagian teknik searching yang sangat membantu untuk mencari sejumlah bahan yang diharapkan. Bagai yang membaca postingan ini dan juga memiliki tips dan triks terkait dengan searching, silahkan berbagi juga.

Contoh yang diambil adalah menggunakan Google, karena harus diakui Google merupakan search engine yang paling banyak dipakai oleh pengguna internet. Beragam informasi dapat kita cari secara cepat dengan menggunakan google. Untuk mengoptimalkan hasil pencarian, google menyediakan beberapa option:

  • Google tidak "case sensitive". Maka bila kita memasukkan Keyword: Prayudi = PRaYUDi
  • Menggunakan kata hubung AND dan OR. Secara Default Google menggunakan keyword and. Maka keyword: orang yogya sebenarnya sama dengan keyword : ‘orang’ AND ‘yogya’. Sementara kata hubung OR akan digunakan untuk menemukan halaman yang setidaknya berisi salah satu dari keyword.
  • Google umumnya akan mengabaikan pencarian dengan kata-kata umum seperti "how" dan "where". Maka jika kata-kata umum ini begitu penting, bisa ditambahkan dengan "+" didepan keyword tersebut.
    Keyword: Blog how ==> Kata "how" akan diabaikan
    Keyword: Blog +how ==> Kata "how" akan diikutsertakan
  • Bila tidak semua informasi ingin ditampilkan, maka bisa digunakan tanda minus "-" untuk mengecualikan kata tertentu dalam pencarian. Misal keywordnya : Prayudi - UII, maka akan menghasilkan pencarian tentang prayudi tanpa melibatkan kata UII dalam hasilnya.
  • Tidak sebagaimana pencarian file dalam dekstop, maka Google tidak mendukung pencarian dengan bantuan tanda * sebagai pengganti huruf sisa. Dalam pencarian dektop, bila kita ingin mencari dengan kata depan komput*, maka akan muncul berbagai kemungkinan : komputa,komputer, dll. Namun di google hanya akan menghasilkan kata "komput". Namun demikian google mendukung penggunaan * dalam pencarian kalimat. Maka keyword: "menjadi * politisi ", hasilnya adalah pencarian "menjadi seorang politisi","menjadi muslim politisi",
  • Menyortir dokumen hasil pencarian berdasar tipe filenya, gunakan perintah filetype : ekstensi file, contohnya : informatika filetype:pdf. Ekstensi file yang didukung dalam pencarian ini antara lain adalah :
    • Microsoft Word Document => .doc
    • Portable Document Format => .pdf
    • Microsoft Power Point Slide => .pps
    • Microsoft Power Point Presentation => .ppt
    • Microsoft Excel => .xls
    • Text Format => .txt
    • Rich Text Format => .rtf
    • Compiled HTML Help Modules => .chm
      Contoh:
      filetype:xls -> untuk mencari file MS Excel
      filetype:doc -> untuk mencari file MS Word
  • inurl: Option ini digunakan untuk mencari kata tertentu yang "masuk" sebagai url. Dengan option ini Anda dapat melakukan pencarian pada pencarian folder tertentu (jika dikombinasikan dengan option "index of").
    Contoh:
    inurl:admin -> pencarian ini menghasilkan url website yang mempunyai kata "admin"
  • site: Option ini secara spesifik digunakan untuk melakukan pencarian pada situs tertentu.
    Contoh:
    site:torry.net "xp style" –> mencari dengan keyword "xp style" pada situs www.torry.net
  • intitle: Option ini digunakan untuk mencari kata tertentu yang terdapat pada title dari halaman web.
  • link: Option ini digunakan untuk mengetahui situs mana saja yang nge-link ke situs tertentu.
    Contoh: link:delphi3000.com –> mencari situs yang mempunyai link ke www.delphi3000.com

Anda dapat mengkombinasikan berbagai option di atas untuk mendapatkan hasil pencarian yang lebih spesifik.
Contoh:
pdf "rapidshare.de/files" site:rapidshare.de
–> untuk mencari buku atau file pdf di rapidshare.de

+inurl:exe|rar|zip site:rapidshare.de
–> untuk mencari program, aplikasi di rapidshare.de

linked list

LINKED LIST

Linked list (one way list) adalah suatu kumpulan elemen data (yang disebut sebagai node) dimana urutannya ditentukan oleh suatu pointer.

Setiap elemen (node) dari suatu linked list terdiri atas dua bagian, yaitu :

- INFO , berisi informasi tentang elemen data yang bersangkutan.

- NEXT (link field/next pointer field), berisi alamat dari elemen (node) selanjutnya yang dituju.

Berikut ini sebuah contoh linked list yang terdiri atas 4 node :

Pada node ke-4 field NEXT-nya berisi NULL, artinya node ke-4 tsb. adalah node terakhir.

Node-node dalam linked list tidak harus selalu digambarkan paralel seperti pada gambar diatas. Linked list pada contoh diatas dapat pula digambarkan seperti berikut ini :

- Ada dua hal yang menjadi kerugian dengan representasi suatu data dengan linked list ini,

yaitu :

1. Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.

2. Diperlukan waktu yang lebih banyak untuk mencari suatu node dalam linked list.

- Sedangkan keuntungannya adalah :

1. Jenis data yang berbeda dapat di-link.

2. Operasi REMOVE atau INSERT hanya dilakukan dengan mengubah pointer-nya saja.


OPERASI DASAR PADA LINKED LIST.


Ada beberapa aturan yang didefinisikan pada operasi didalam linked list, yaitu :

- Jika P adalah suatu variabel pointer, maka nilainya adalah alamat atau lokasi dari variabel lain yang dituju.

- Operasi yang didefinisikan pada suatu variabel pointer adalah :

1. Test apakah sama dengan NULL.

2. Test untuk kesamaan dengan variabel pointer lain.

3. Menetapkan sama dengan NULL.

4. Menetapkan menuju ke node lain.

Notasi yang didefinisikan sehubungan dengan operasi diatas adalah :

1. NODE(P), artinya node yang ditunjuk oleh pointer P.

2. INFO(P), artinya nilai INFO dari node yang ditunjuk pointer P.

3. NEXT(P), artinya hubungan (link) selanjutnya dari node yang ditunjuk oleh pointer P.

Sebagai contoh, perhatikan linked list dibawah ini :

NODE(P) = node yang ditunjuk oleh P yaitu node pertama.

INFO(P) = A

NEXT(P) = node ke-dua

INFO(NEXT(NEXT(P))) = C


MENGHAPUS SUATU NODE DARI LINKED LIST (REMOVE).


Untuk menghapus node dalam linked list digunakan procedure FREENODE.

Jika Q adalah suatu variabel pointer, maka FREENODE(Q) akan menyebabkan node yang ditunjuk oleh variabel pointer Q dihapus dari linked list.

Perhatikan linked list berikut :

langkah ke-1 :

Q := Next(P)

langkah ke-2 :

Next(P) := Next(Q)

langkah ke-3 :

Freenode(Q)

procedure Freenode(Q)

(a) Next(Q) := Avail

(b) Info(Q) := Null

(c) Avail := Q


MENYISIPKAN SUATU NODE KE DALAM LINKED LIST


Untuk menyisipkan node dalam linked list digunakan procedure GETNODE.

Jika NEW adalah suatu variabel pointer, maka GETNODE(NEW) akan menyebabkan node yang ditunjuk oleh variabel pointer NEW disisipkan ke dalam linked list.

procedure Getnode(NEW)

if Avail = Null

then out-of-free-space

(a) else begin

Getnode := Avail;

(b) Avail := Next(Avail);

(c) Next(Getnode) : = Null;

end;


Algoritma menyisipkan sebuah Node :


(a) Getnode(NEW);

(b) Info(NEW) := Name;

(c) Q := Next(P)

(d) Next(P) := NEW

(e) Next(NEW) := Q


Logika Linked List pada Array


(a) Jika tidak menggunakan logika linked list

(pada umumnya dalam meng-input data digunalan cara sequential)


Awal


Insert E


Delete C


Insert F

1

A

1

A

1

A

1

A

2

C

2

C

2


2


3


3

E

3

E

3

E

4


4


4


4

F












Insert G






Delete E


(overflow)





1

A

1

A





2


2






3


3






4

F

4

F





(b) Jika menggunakan logika Linked List

Keadaan awal Insert E Delete C


Info

Next


Info

Next


Info

Next

1

A

2

1

A

2

1

A

3

2

C

0

2

C

3

2


4

3


4

3

E

0

3

E

0

4


0

4


0

4


0

Insert F Delete E Insert G


Info

Next


Info

Next


Info

Next

1

A

3

1

A

2

1

A

2

2

F

0

2

F

0

2

F

3

3

E

2

3


4

3

G

0

4


0

4


0

4




Mendefinisikan Linked List dalam Pascal


Type nodeptr = ^ nodetype;

nametype = packed array [1..10] of char;

nodetype = record

info : nametype;

next : nodeptr;

end;

Var p : nodeptr;

node : nodetype;

* Catatan :

P ^. Info : Info dari node yang ditunjuk oleh pointer P

P^. Next : Next dari node yang ditunjuk oleh pointer P

P := nil : pointer P berisi nilai Null

New(P) : fungsi Getnode dalam Pascal

dispose(P) : procedure Freenode dalam Pascal


Menghapus sebuah Node dalam Pascal


procedure removaf(p:nodeptr, var out:nametype);

var q : nodeptr;

begin

if (p^.Next = nil)

then UNDERFLOW-CONDITION

else begin

q := p^.Next;

p^.Next := q^.Next;

out := q^.Info;

dispose(q);

end;

end;


Menyisipkan sebuah Node dalam Pascal


procedure inseraf(p:nodeptr, in:nametype);

var q : nodeptr;

begin

New(q);

q^.Info := in;

q^.Next := p^.Next;

p^.Next := q;

end;


Penyisipan pada akhir dari suatu Linked List (Linked List Antrean) dalam Pascal


Procedure Inserend(first : nodeptr, in :nametype);

Var newnode, q : nodeptr;

Begin

New(newnode);

newnode^.Info := in;

newnode^.Next := nil;

q := first;

do while (q^.next <> nil)

q := q^.Next;

q^.Next := newnode;

End;

Jika sebuah Linked List digunakan untuk menggambarkan suatu antrean, dalam hal ini pointer dapat langsung menunjuk ke rear/akhir dari antrean untuk menghindari pengulangan melalui semua node untuk menemukan node terakhir.

procedure inserend(in : nametype, var rear : nodeptr);

var newnode : nodeptr;

begin

New(newnode);

newnode^.Info := in;

newnode^.Next := nil;

rear^.Next := newnode;

rear := newnode;

end;

Circular Linked List

Head Nodes

Circular Linked List dengan Head Node

Circular Linked List dengan Head Node kosong


Algoritma penyisipan node yang berisi variabel Name pada head dalam Linked List


(a) Ambil node baru pada free storage kemudian node tersebut ditunjuk oleh pointer NEW

(b) Isikan Info dengan Name pada node baru tsb.

(c) Next dari node baru tsb. menunjuk ke node yang ditunjuk oleh pointer Head

(d) Pindahkan pointer Head menunjuk ke node yang baru.

Menghapus Node Khusus

Procedure removp(head : nodeptr, var p:nodeptr, out : nametype);

Var prior, this : nodeptr;

flag : 0..2;

Begin

prior := head;

this := head^.next;

flag := 1;

While flag = 1

do begin

if (this = head)

then flag := 2;

if (this = p)

then flag := 0

else begin

prior := this;

this := this^.next;

end;

end;

if (flag > 0)

then Node yang ditunjuk oleh pointer p tidak ada dalam List else begin

prior^.next := p^.next;

out := p^.info;

dispose(p)

end;

End;

Doubly Linked List

Tiap node memiliki pointer yang menunjuk ke node sesudahnya dan pointer yang menunjuk

ke node sebelumnya.

Node Sesudahnya : Next(Node)

Node sebelumnya : Prior(Node)

Next(Prior(P)) = P dan P = Prior(next(P))

Double Linked List Kosong :

prior head next Prior(Head) = Head

Next(Head) = Head

Dalam Pascal :

Type nodeptr = ^ nodetype

nodetype = record

prior : nodeptr;

info : nametype;

next : nodeptr

end;

Procedure menghapus sebuah node pada Double Linked List

(a) Set pointer P

(b) Ubah pointer pada node Next predecessor P ke node Successor P

(c) Ubah pointer pada node dari prior Successor P ke node Predeccssor P

(d) bebaskan node yang ditunjuk pointer P

Dalam Pascal :

Procedure Removp(var p:nodeptr, out : nametype);

Var pred, succ : nodeptr;

Begin

pred := p^.prior;

succ := p^.next;

pred^.next := succ;

succ^.prior := pred;

out := p^.info;

dispose(p)

End;

Penyisipan sebuah Node pada Doubly Linked List

(a) Ambil sebuah node baru dan isikan datanya

(b) Set pointer dari Next node baru menunjuk ke Successor P dan pointer Proirnya ke P

(c) Ubah pointer Next P menunjuk ke node baru

(d) Ubah pointer Prior dari Successor P menunjuk ke node baru

Contoh Aplikasi Linked List

Polynomial

anxn + an-1 xn-1 + ... + a2 x2 + a1 x + a0

Type nodeptr = ^nodetype;

nodetype = record

exp : integer;

coef : integer;

next : nodeptr;

end;

143 x4 + 201 x2 + 14 x + 2

a4 = 143 a3 = 0 a2 = 201 a1 = 14 a0 = 2