LINK LIST

Definisi struct untuk link list

Linked list adalah salah satu struktur data dasar, dan dapat digunakan untukmenerapkan struktur data lainnya. Dalam linked list terdapat perbedaan jumlah node.Setiap node terdiri dari dua bidang. Field pertama berisi nilai atau data dan kolomkedua memegang referensi ke node berikutnya atau null jika linked list kosong.:

biasanya didalam untuk mendeklarasikan sebuah node, kebanyakan dari temend – temend menggunakan class.  contoh :

class Node{

private :

……

Node* berikut;

};

Node berikut tersebut adalah sebuah pointer yang menunjuk suatu alamat dalam memori;

tetapi disini bisa saja menggunakan  struct

Bagian kunci dari linked list adalah sebuah struktur, yang memegang data untuk setiapnode (nama, alamat, usia atau apapun untuk item dalam daftar), dan yang paling penting, pointer ke node berikutnya. Di sini saya telah memberikan struktur node khas:

struct node

{  char name[20];

int age;

float height;

node *nxt;

};

node *start_ptr = NULL;

Bagian penting dari struktur adalah garis sebelum kurung kurawal penutup. Hal inimemberikan pointer ke node berikutnya dalam daftar. Ini adalah satu-satunya kasus di C + + di mana Anda diijinkan untuk mengacu pada tipe data (dalam hal ini node kasus)sebelum Anda bahkan selesai mendefinisikannya!
Saya juga dinyatakan sebagai start_ptr disebut pointer yang permanen akan mengarahke awal daftar. Untuk mulai dengan, tidak ada node dalam daftar, yang mengapastart_ptr diatur ke NULL.
Menambahkan node ke akhir daftar

Masalah pertama yang kita hadapi adalah bagaimana untuk menambahkan node ke dalam daftar. Untuk mudahnya, kita akan mengasumsikan bahwa itu harus ditambahkan ke akhir daftar, meskipun itu bisa dimasukkan kemana saja dalam daftar (masalahsaya akan menangani nanti).
Pertama, kita mendeklarasikan ruang untuk item penunjuk dan menetapkan pointersementara untuk itu.

dalam link list terdapat beberapa operasi dasar, yaitu :

find, insert dan delete.

DOUBLE LINKED LIST

Double Linked List

Link List adalah suatu struktur data yang tersusun atas info dan link yang digunakan untuk merangkai elemen (node) berikutnya
Double Link List adalah elemen-elemen yang dihubungkan dengan dua pointer dalam satu elemen dan list dapat melintas baik di depan atau belakang.
Elemen double link list terdiri dari tiga bagian:
– Bagian data informasi
– Pointer next yang menunjuk ke elemen berikutnya
– Pointer prev yang menunjuk ke elemen sebelumnya

Untuk menunjuk head dari double link list, pointer prev dari elemen pertama menunjuk NULL. Sedangkan untuk menunjuk tail, pointer next dari elemen terakhir menunjuk NULL.
Contoh Membuat TDA(Tipe Data Abstrak) dari Double Linked Circular List tersebut.
Instan :
Double Linked Circular List
Operasi :
Buat_node(char x) : membuat node baru dengan informasi x
Tambah_elemen_didepan() : menambah elemen paling depan (pointernya menunjuk
elemen pertama link list)
Tambah_elemen_dibelakang() : menambah elemen paling belakang (pointer elemen
yang baru menunjuk elemen pertama)
Hapus_elemen_() : Menghapus elemen (pointer menunjuk elemen yang akan dihapus)
Cetak () : menelusuri elemen satu demi dan menampilkan informasinya.

 

1. Hal termudah selanjutnya yang harus dilakukan adalah menghapus node dari daftarlangsung setelah posisi saat ini. Kita harus menggunakan pointer sementara untuk menunjuk ke simpul yang akan dihapus. Setelah simpul ini telah berlabuh”, pointer kenode yang tersisa bisa dikaji ulang sebelum node di death row dihapus. Berikut adalahurutan tindakan:

1. Pertama, pointer sementara ditugaskan ke simpul setelah yang sekarang. Ini adalahnode untuk dihapus:http://richardbowles.tripod.com/cpp/linklist/link19.gif

2. Sekarang pointer dari node saat ini dibuat untuk lompatankatak node berikutnya danmengarah ke satu setelah itu

http://richardbowles.tripod.com/cpp/linklist/link20.gif

2. Langkah terakhir adalah menghapus simpul yang ditunjuk oleh temp.

Berikut adalah kode untuk menghapus node. Ini termasuk tes di awal untuk mengujiapakah node saat ini adalah yang terakhir dalam daftar:

if (current->nxt == NULL)

cout << “There is no node after current” << endl;

else

{ node *temp;

temp = current->nxt;

current->nxt = temp->nxt;     // Could be NULL

delete temp;

}

Berikut ini adalah kode untuk menambahkan node setelah yang sekarang. Hal inidilakukan sama, tapi saya tidak digambarkan dengan diagram:

if (current->nxt == NULL)

add_node_at_end();

else

{ node *temp;

new temp;

get_details(temp);

temp->nxt = current->nxt;

current->nxt = temp;

}

Saya mengasumsikan bahwa fungsi add_node_at_end () merupakan rutin untukmenambahkan node ke ujung daftar yang kita buat di dekat bagian atas bagian ini.Rutin ini disebut jika pointer saat ini adalah yang terakhir dalam daftar sehingga yangbaru akan ditambahkan ke akhir. Sama halnya dengan get_temp(temp);

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s