Pengertian Link List

Linked list tidak lain adalah suatu struktur data yg merupakan suatu rangkaian atau daftar record berjenis sama. Kemudian dihubungkan melalui bantuan pointer. Pengalokasian daftar dapat dilakukan secara dinamis sehingga isi dari daftar dapat dimanipulasi. Untuk memahami
linked list, terlebih dahulu anda harus tahu konsep pointer dan pengalokasian memori
Coba anda bayangkan apabila anda mendeklarasikan array dari record(array of record) sebanyak 10 elemen. Setiap kali program dijalankan, maka akan memesan memory sebesar 10x ukuran record. Itu merupakan suatu pemborosan walaupun kita hanya menggunakan 5 elemen record.
Maka dari itu, biasanya para programer lebih memilih menggunakan linked list dalam pemrograman. Linked list dibedakan atas 2 jenis yaitu singly linked list dan doubly linked list.
Linked List : Definisi Node, Linked List, Single Linked List, Double Linked List, & Circular Linked List
21012010
2. Jelaskan definisi Node, Linked List, Single Linked List, Double Linked List, dan Circular Linked List!
(sertai gambar permodelannya)
a. Nodes
Self-referential objects (object yang mereferensikan dirinya sendiri) yang disebutnodes, yang dihubungkan dengan links, membentuk kata “linked” list.
b. Linked List ( LL )
Adalah
koleksi data item yang tersusun dalam sebuah barisan secara linear,
dengan penyisipan dan pemindahan dapat dilakukan dalam semua tempat di
LL tersebut.
c. Single Linked List
Adalah
sebuah LL yang menggunakan sebuah variabel pointer saja untuk menyimpan
banyak data dengan metode LL, suatu daftar isi yang saling berhubungan.
Ilustrasi single LL:

Bila
dalam single LL pointer hanya dapat bergerak ke satu arah saja, maju /
mundur, kanan / kiri, sehingga pencarian datanya juga hanya satu arah
saja.
d. Double Linked List
Dalam double LL ( Linked List berpointer ganda ) dapat mengatasi kelemahan-kelemahan single LL tersebut.
Ilustrasi double LL:
Adalah
double / single LL yang simpul terakhirnya menunjuk ke simpul awal, dan
simpul awalnya menunjuk ke simpul akhir, atau dapat disebut LL yang
dibuat seakan-akan merupakan sebuah lingkaran dengan titik awal dan
titik akhir saling bersebelahan jika LL tersebut masih kosong, ilustrasi
Circular LL :
Dalam ilmu komputer , daftar link (atau lebih jelas, "-linked list tunggal") adalah sebuah struktur data yang terdiri dari urutan node yang masing-masing berisi referensi (yaitu, link) ke node berikutnya dalam urutan tersebut.
Linked list adalah salah satu struktur data sederhana dan paling umum. Mereka dapat digunakan untuk melaksanakan beberapa umum lainnya struktur data abstrak , termasuk tumpukan , antrian , array asosiatif , dan ekspresi simbolik ,
meskipun tidak jarang untuk menerapkan struktur data lainnya secara
langsung tanpa menggunakan daftar sebagai dasar pelaksanaan.
Manfaat utama dari sebuah linked list melalui konvensional array adalah
bahwa daftar elemen dengan mudah dapat ditambahkan atau dihapus tanpa
realokasi atau reorganisasi dari struktur keseluruhan karena item data
tidak perlu disimpan contiguously dalam memori atau pada disk. daftar
Linked memungkinkan penyisipan dan penghapusan node pada setiap titik
dalam daftar, dan dapat melakukannya dengan sejumlah konstan operasi
jika link sebelumnya untuk link yang ditambahkan atau dihapus
dipertahankan selama pencarian daftar.
Di sisi lain, linked list sederhana dengan sendirinya tidak memungkinkan akses acak ke data lain dari node pertama data, atau segala bentuk pengindeksan yang efisien. Dengan
demikian, banyak dasar operasi - seperti mendapatkan node terakhir dari
daftar (dengan asumsi bahwa node terakhir tidak dipertahankan sebagai
referensi node terpisah dalam struktur daftar), atau menemukan sebuah
node yang berisi acuan tertentu, atau menemukan tempat dimana node baru
harus dimasukkan - mungkin memerlukan pemindaian sebagian besar atau
semua elemen daftar.
Sejarah
daftar Linked dikembangkan di 1955-56 oleh Allen Newell , Cliff Shaw dan Herbert Simon di RAND Corporation sebagai struktur data utama untuk mereka Informasi Pengolahan Bahasa . IPL digunakan oleh para penulis untuk mengembangkan beberapa awal kecerdasan buatanprogram-program, termasuk Logika Teori Mesin, yang Umum Problem Solver , dan program catur komputer. Laporan
pekerjaan mereka muncul dalam Transaksi IRE Teori Informasi pada tahun
1956, dan beberapa prosiding konferensi 1957-1959, termasuk Proceedings
of the Western Conference Komputer Bersama pada tahun 1957 dan 1958, dan
Informasi Pengolahan (Prosiding pertama UNESCO Konferensi Internasional Pengolahan Informasi ) pada tahun 1959. Diagram
sekarang-klasik yang terdiri dari blok merupakan daftar node dengan
panah yang menunjuk ke daftar node berturut-turut muncul dalam
"Programming Logic Machine Theory" oleh Newell dan Shaw di Proc. WJCC, Februari 1957. Newell dan Simon diakui dengan ACM Turing Award pada tahun 1975 karena "kontribusi dasar dibuat untuk kecerdasan buatan, psikologi kognisi manusia, dan pengolahan daftar". Masalah mesin terjemahan untuk bahasa alami pengolahan dipimpin Victor Yngve di Massachusetts Institute of Technology (MIT)
untuk menggunakan linked list sebagai struktur data dalam
COMITprogramming bahasa nya untuk penelitian komputer di bidang linguistik . Sebuah
laporan mengenai bahasa ini berjudul "Sebuah bahasa pemrograman untuk
terjemahan mekanik" muncul dalam penerjemahan Teknik pada tahun 1958.
LISP , berdiri untuk prosesor daftar, diciptakan oleh John McCarthy pada tahun 1958 ketika ia berada di MIT dan pada tahun 1960 ia menerbitkan desain dalam makalah di Komunikasi ACM , berjudul "Fungsi Rekursif dan Komputasi Simbolik Ekspresi mereka oleh Mesin, Bagian Aku ". Salah satu struktur utama LISP's data adalah linked list. Pada
awal 1960-an, kegunaan kedua daftar terkait dan bahasa yang menggunakan
struktur ini sebagai representasi data primer mereka mapan. Bert Green dari Laboratorium MIT Lincoln menerbitkan
sebuah artikel berjudul "Komputer bahasa untuk manipulasi simbol" dalam
Transaksi IRE pada Faktor Manusia dalam Elektronika Maret 1961 yang
meringkas keuntungan dari pendekatan linked list. Sebuah
artikel review kemudian, "Sebuah Perbandingan bahasa komputer
daftar-pengolahan" oleh Bobrow dan Raphael, muncul di Komunikasi dari
ACM pada bulan April 1964.
Beberapa sistem operasi yang dikembangkan oleh Systems Teknis Konsultan (awalnya
dari West Lafayette Indiana, dan kemudian Chapel Hill, North Carolina)
digunakan secara terpisah terkait daftar sebagai struktur file. Sebuah
entri direktori menunjuk ke sektor pertama dari sebuah file, dan bagian
berhasil file itu berada dengan melintasi pointer. Sistem menggunakan teknik ini termasuk Flex (untuk Motorola 6800CPU), mini-Flex (CPU yang sama), dan Flex9 (untuk CPU 6809 Motorola). Sebuah
varian yang dikembangkan oleh TSC untuk dan dipasarkan oleh Smoke
Sinyal Penyiaran di California, digunakan penggandaan daftar dengan cara
yang sama.
TSS/360
sistem operasi, yang dikembangkan oleh IBM untuk mesin 360/370 Sistem,
menggunakan linked list ganda untuk sistem mereka katalog file. Struktur
direktori yang sama dengan Unix, dimana direktori bisa berisi file dan /
atau direktori lain dan mencakup setiap kedalaman. Sebuah
kutu utilitas diciptakan untuk memperbaiki masalah file sistem setelah
crash, karena bagian modifikasi dari file katalog kadang-kadang dalam
memori ketika kecelakaan terjadi. Masalah yang terdeteksi dengan membandingkan link ke depan dan ke belakang untuk konsistensi. Jika
link forward adalah korup, maka jika mundur link ke node terinfeksi
ditemukan, link forward ditetapkan untuk simpul dengan link mundur. Sebuah
komentar lucu dalam kode sumber tempat utilitas ini dipanggil
menyatakan "Semua orang tahu kerah kutu menghilangkan bug pada kucing".
LINKLIST Linked list /
di sebut juga senarai berantai yaitu penglokasian memori secara dinamis
yang digunakan untuk menyimpan data. Pada linked list kita dapat
menyimpan data seberapapun yang kita mau. Single linked list (senarai
berantai tunggal) adalah linked list dimana semua simpul-simpulnya hanya
memiliki 1buah penunjuk yang digunakan untuk mengkaitkan diri degan
simpul lain yang sejenis yang ada disebelah kanannya didalam sebuah
senarai berantai yang sama. Unsure-unsur pendukung linked list meliputi:
- Penunjuk/pointer à alat untuk menunjuk sebuah simpul atau tempat
kosong (null). - Simpul/node à untuk simpul tung
Copy the BEST Traders and Make Money : http://ow.ly/KNICZ
Copy the BEST Traders and Make Money : http://ow.ly/KNICZ
Copy the BEST Traders and Make Money : http://ow.ly/KNICZ
LINKLIST Linked list /
di sebut juga senarai berantai yaitu penglokasian memori secara dinamis
yang digunakan untuk menyimpan data. Pada linked list kita dapat
menyimpan data seberapapun yang kita mau. Single linked list (senarai
berantai tunggal) adalah linked list dimana semua simpul-simpulnya hanya
memiliki 1buah penunjuk yang digunakan untuk mengkaitkan diri degan
simpul lain yang sejenis yang ada disebelah kanannya didalam sebuah
senarai berantai yang sama. Unsure-unsur pendukung linked list meliputi:
- Penunjuk/pointer à alat untuk menunjuk sebuah simpul atau tempat
kosong (null). - Simpul/node à untuk simpul tunggal hanya dapat menunjuk
kesimpul yang serupa dengan dirinya yang letaknya disebelah kanannya. -
Senarai berantai/single linked list à merupakan kiumpulan simpul-simpul
yang terhubung satu dengan yang lain. SIMPUL DAN PENUNJUK. public class
Simpul { public String data; Simpul kanan; //konstruktor Simpul(String
d) {data = d; } //fungsi untuk mencetak 'simpul' void cetakSimpul()
{System.out.print(data); } } SENARAI BERANTAI public class Senarai {
private Simpul awal; Simpul akhir; public //konstruktor Senarai() {awal =
null; akhir = null; } //fungsi untuk menambah di awal 'senarai' void
tambahAwal(String dd) {System.out.println("menambah depan " + dd + "
dilakukan..."); Simpul baru = new Simpul(dd); if(awal==null) akhir=baru;
} //fungsi untuk menambah di akhir 'senarai' void tambahAkhir(String
dd) {System.out.println("menambah belakang " + dd + " dilakukan...");
Simpul baru = new Simpul(dd); if(awal==null) //jika senarai kosong
akhir=baru; else //jika sanarai tidak kosong akhir.kanan=baru;
baru.kanan=null; akhir=baru; } //fungsi untuk menambah ditengah Boolean
tambahTengah(String kunci, String dd) { System.out.println("menambah
tengah " + dd + " dilakukan..."); Simpul bantu = awal; while(bantu.data
!= kunci) {bantu = bantu.kanan; if(bantu == null)
{System.out.println("---> Nambah " + dd + " Gagal,karena data "+kunci
+ " tidak ditemukan"); return false; } } Simpul baru = new Simpul(dd);
if(bantu==akhir) {baru.kanan = null; akhir.kanan = baru; akhir = baru; }
else {baru.kanan = bantu.kanan; bantu.kanan = baru; } return true; }
//fungsi untuk menghapus sebuah simpul di awal 'senarai' Simpul
hapusAwal() {System.out.println("Menghapus diAWAL senarai
dilakukan..."); Simpul hapus = awal; if(awal.kanan == null) //jika
senaraitinggal 1 simpul akhir=akhir.kanan; awal=awal.kanan; return
hapus; } //fungsi untuk menghapus sebuah simpul di Simpul hapusAkhir()
{System.out.println("menghapus diAKHIR senarai dilakukan..."); Simpul
bantu = awal; while (bantu.kanan != akhir) bantu = bantu.kanan; Simpul
hapus = akhir; akhir = bantu; akhir.kanan = null; return hapus; }
//fungsi untuk menghapus simpul berdasarkan kata kunci Simpul
hapusPilih(String kunci) {System.out.println("Menghapus simpul dg kunci
dilakukan..."); Simpul bantu = awal; if(bantu.data == kunci) //data
ditemukan di awal {awal = awal.kanan; return bantu; } else
{while(bantu.kanan.data != kunci) {bantu = bantu.kanan; if(bantu ==
null) //data ditemukan di akhir {Simpul hapus = akhir; akhir = bantu;
akhir.kanan = null; return hapus; } else //data ditemukan diengah {
Simpul hapus = bantu.kanan; bantu.kanan = hapus.kanan; return hapus; }
//fungsi mencetak maju void cetakMaju() {System.out.println("Mencetak
maju : "); m bantu = awal; while(bantu != null) { bantu.cetakSimpul();
bantu = bantu.kanan; System.out.print(", "); } System.out.println(" ");
//ganti baris } } ProgramUtamaSenaraiBerantai public class
ProgramUtamaSenaraiBerantai { public static void main(String args[]) {
Senarai mahasiswa = new Senarai(); mahasiswa.tambahAwal("Agung");
mahasiswa.tambahAwal("Beny"); mahasiswa.tambahAwal("cecep");
mahasiswa.tambahAkhir("Eko"); mahasiswa.tambahAkhir("feri");
mahasiswa.tambahAkhir("gunawan"); mahasiswa.tambahAkhir("Hasan");
mahasiswa.tambahTengah("Cecep","Dedy");
mahasiswa.tambahTengah("Parmin","Deni"); mahasiswa.cetakMaju();
System.out.println(""); mahasiswa.hapusAwal(); mahasiswa.hapusAkhir();
mahasiswa.cetakMaju(); System.out.println("");
mahasiswa.hapusPilih("Dedy"); mahasiswa.cetakMaju();
System.out.println(""); } } Kirimkan Ini lewat Email
Copy the BEST Traders and Make Money : http://ow.ly/KNICZ
Copy the BEST Traders and Make Money : http://ow.ly/KNICZ
Copy the BEST Traders and Make Money : http://ow.ly/KNICZ
LINKLIST Linked list /
di sebut juga senarai berantai yaitu penglokasian memori secara dinamis
yang digunakan untuk menyimpan data. Pada linked list kita dapat
menyimpan data seberapapun yang kita mau. Single linked list (senarai
berantai tunggal) adalah linked list dimana semua simpul-simpulnya hanya
memiliki 1buah penunjuk yang digunakan untuk mengkaitkan diri degan
simpul lain yang sejenis yang ada disebelah kanannya didalam sebuah
senarai berantai yang sama. Unsure-unsur pendukung linked list meliputi:
- Penunjuk/pointer à alat untuk menunjuk sebuah simpul atau tempat
kosong (null). - Simpul/node à untuk simpul tunggal hanya dapat menunjuk
kesimpul yang serupa dengan dirinya yang letaknya disebelah kanannya. -
Senarai berantai/single linked list à merupakan kiumpulan simpul-simpul
yang terhubung satu dengan yang lain. SIMPUL DAN PENUNJUK. public class
Simpul { public String data; Simpul kanan; //konstruktor Simpul(String
d) {data = d; } //fungsi untuk mencetak 'simpul' void cetakSimpul()
{System.out.print(data); } } SENARAI BERANTAI public class Senarai {
private Simpul awal; Simpul akhir; public //konstruktor Senarai() {awal =
null; akhir = null; } //fungsi untuk menambah di awal 'senarai' void
tambahAwal(String dd) {System.out.println("menambah depan " + dd + "
dilakukan..."); Simpul baru = new Simpul(dd); if(awal==null) akhir=baru;
} //fungsi untuk menambah di akhir 'senarai' void tambahAkhir(String
dd) {System.out.println("menambah belakang " + dd + " dilakukan...");
Simpul baru = new Simpul(dd); if(awal==null) //jika senarai kosong
akhir=baru; else //jika sanarai tidak kosong akhir.kanan=baru;
baru.kanan=null; akhir=baru; } //fungsi untuk menambah ditengah Boolean
tambahTengah(String kunci, String dd) { System.out.println("menambah
tengah " + dd + " dilakukan..."); Simpul bantu = awal; while(bantu.data
!= kunci) {bantu = bantu.kanan; if(bantu == null)
{System.out.println("---> Nambah " + dd + " Gagal,karena data "+kunci
+ " tidak ditemukan"); return false; } } Simpul baru = new Simpul(dd);
if(bantu==akhir) {baru.kanan = null; akhir.kanan = baru; akhir = baru; }
else {baru.kanan = bantu.kanan; bantu.kanan = baru; } return true; }
//fungsi untuk menghapus sebuah simpul di awal 'senarai' Simpul
hapusAwal() {System.out.println("Menghapus diAWAL senarai
dilakukan..."); Simpul hapus = awal; if(awal.kanan == null) //jika
senaraitinggal 1 simpul akhir=akhir.kanan; awal=awal.kanan; return
hapus; } //fungsi untuk menghapus sebuah simpul di Simpul hapusAkhir()
{System.out.println("menghapus diAKHIR senarai dilakukan..."); Simpul
bantu = awal; while (bantu.kanan != akhir) bantu = bantu.kanan; Simpul
hapus = akhir; akhir = bantu; akhir.kanan = null; return hapus; }
//fungsi untuk menghapus simpul berdasarkan kata kunci Simpul
hapusPilih(String kunci) {System.out.println("Menghapus simpul dg kunci
dilakukan..."); Simpul bantu = awal; if(bantu.data == kunci) //data
ditemukan di awal {awal = awal.kanan; return bantu; } else
{while(bantu.kanan.data != kunci) {bantu = bantu.kanan; if(bantu ==
null) //data ditemukan di akhir {Simpul hapus = akhir; akhir = bantu;
akhir.kanan = null; return hapus; } else //data ditemukan diengah {
Simpul hapus = bantu.kanan; bantu.kanan = hapus.kanan; return hapus; }
//fungsi mencetak maju void cetakMaju() {System.out.println("Mencetak
maju : "); m bantu = awal; while(bantu != null) { bantu.cetakSimpul();
bantu = bantu.kanan; System.out.print(", "); } System.out.println(" ");
//ganti baris } } ProgramUtamaSenaraiBerantai public class
ProgramUtamaSenaraiBerantai { public static void main(String args[]) {
Senarai mahasiswa = new Senarai(); mahasiswa.tambahAwal("Agung");
mahasiswa.tambahAwal("Beny"); mahasiswa.tambahAwal("cecep");
mahasiswa.tambahAkhir("Eko"); mahasiswa.tambahAkhir("feri");
mahasiswa.tambahAkhir("gunawan"); mahasiswa.tambahAkhir("Hasan");
mahasiswa.tambahTengah("Cecep","Dedy");
mahasiswa.tambahTengah("Parmin","Deni"); mahasiswa.cetakMaju();
System.out.println(""); mahasiswa.hapusAwal(); mahasiswa.hapusAkhir();
mahasiswa.cetakMaju(); System.out.println("");
mahasiswa.hapusPilih("Dedy"); mahasiswa.cetakMaju();
System.out.println(""); } } Kirimkan Ini lewat Email
Copy the BEST Traders and Make Money : http://ow.ly/KNICZ
Copy the BEST Traders and Make Money : http://ow.ly/KNICZ
Copy the BEST Traders and Make Money : http://ow.ly/KNICZ
Tidak ada komentar:
Posting Komentar