Welcome To Aloen BloG

Linked List

Diposting oleh Unknown | 05.41 | | 0 komentar »

Linked list adalah salah satu struktur data dasar yang sangat fundamental dalam bidang ilmu komputer. Dengan menggunakan linked list maka programmer dapat menyimpan datanya kapanpun dibutuhkan. Linked list mirip dangan array, kecuali pada linked list data yang ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time).

Pada array, apabila programmer ingin menyimpan data, programmer diharuskan untuk mendefinisikan besar array terlebih dahulu, seringkali programmer mengalokasikan array yang sangat besar(misal 100). Hal ini tidak efektif karena seringkali yang dipakai tidak sebesar itu. Dan apabila programmer ingin menyimpan data lebih dari seratus data, maka hal itu tidak dapat dimungkinkan karena sifat array yang besarnya statik. Linked list adalah salah satu struktur data yang mampu menutupi kelemahan tersebut.

Secara umum linked list tersusun atas sejumlah bagian-bagian data yang lebih kecil yang terhubung (biasanya melalui pointer). Linked list dapat divisualisasikan seperti kereta, bagian kepala linked list adalah mesin kereta, data yang disimpan adalah gerbong, dan pengait antar gerbong adalah pointer.

Programmer membaca data menyerupai kondektur yang ingin memeriksa karcis penumpang. Programmer menyusuri linked list melalui kepalanya, dan kemudian berlanjut ke gerbong (data) berikutnya, dan seterusnya sampai gerbong terakhir (biasanya ditandai dengan pointer menunjukkan alamat kosong (NULL)). Penyusuran data dilakukan secara satu persatu sehingga penyusuran data bekerja dengan keefektifan On. Dibandingkan array, ini merupakan kelemahan terbesar linked list. Pada array, apabilan programmer ingin mengakses data ke-n (index n), maka programmer dapat langsung mengaksesnya. Sedangkan dengan linked list programmer harus menyusuri data sebanyak n terlebih dahulu.

Apabila kita menggunakan java, konsep linked list ini sudah terlingkupi dalam Java Collection Framework (JCF). Dengan Java, kita tidak perlu lagi membuat LinkedList. Kita tinggal menggunakan class yang sudah disediakan dalam JCF.

Berikut ini saya akan menjelaskan operasi-operasi yang ada pada Linked List yaitu sebagai berikut :

1.Insert
Insert digunakan untuk menambahkan sebuah simpul baru ke dalam suatu linked list.

2.IsEmpty
IsEmpty digunakan untuk mengetahui apakah linked list kosong atau tidak.

3.Fine First
Fine First digunakan untuk mencari elemen pertama dari linked lis

4.Fine Next
Fine Next digunakan untuk mencari elemen sesudah elemen yang ditunjuk oleh now.

5.Retrieve
Retrieve digunakan untuk mengambil elemen yang ditunjuk oleh now. Kemudian elemen tersebut akan dikembalikan oleh fungsi.

6.Update
Update digunkan untuk mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu.

7.Delete Now
Delete Now digunakan untuk menghapus elemen yang ditunjuk oleh now.

8.Delete Head
Delete Head digunakan untuk menghapus elemen yang ditunjuk head.
Head berpindah ke elemen sesudahnya.

9.Clear
Clear digunakan untuk menghapus linked list yang sudah ada.
Fungsi ini wajib dilakukan bila anda ingin mengakhiri program yang menggunakan linked list. Jika anda melakukannya, data-data yang dialokasikan ke memori pada program sebelumnya akan tetap tertinggal di dalam memori.


Jenis-jenis Linked List:

Contoh program linked list:

#include

struct node

{ char name[20]; // Name of up to 20 letters

int age; // D.O.B. would be better

float height; // In metres

node *nxt;// Pointer to next node

};

node *start_ptr = NULL;

node *current; // Used to move along the list

int option = 0;

void add_node_at_end()

{ node *temp, *temp2; // Temporary pointers

// Reserve space for new node and fill it with data

temp = new node;

cout << "Please enter the name of the person: ";

cin >> temp->name;

cout << "Please enter the age of the person : ";

cin >> temp->age;

cout << "Please enter the height of the person : ";

cin >> temp->height;

temp->nxt = NULL;

// Set up link to this node

if (start_ptr == NULL)

{ start_ptr = temp;

current = start_ptr;

}

else

{ temp2 = start_ptr;

// We know this is not NULL - list not empty!

while (temp2->nxt != NULL)

{ temp2 = temp2->nxt;

// Move to next link in chain

}

temp2->nxt = temp;

}

}

void display_list()

{ node *temp;

temp = start_ptr;

cout <<>

if (temp == NULL)

cout << "The list is empty!" <<>

else

{ while (temp != NULL)

{ // Display details for what temp points to

cout << "Name : " <<>name << " ";

cout << "Age : " <<>age << " ";

cout << "Height : " <<>height;

if (temp == current)

cout << " <-- Current node";

cout <<>

temp = temp->nxt;

}

cout << "End of list!" <<>

}

}

void delete_start_node()

{ node *temp;

temp = start_ptr;

start_ptr = start_ptr->nxt;

delete temp;

}

void delete_end_node()

{ node *temp1, *temp2;

if (start_ptr == NULL)

cout << "The list is empty!" <<>

else

{ temp1 = start_ptr;

if (temp1->nxt == NULL)

{ delete temp1;

start_ptr = NULL;

}

else

{ while (temp1->nxt != NULL)

{ temp2 = temp1;

temp1 = temp1->nxt;

}

delete temp1;

temp2->nxt = NULL;

}

}

}

void move_current_on ()

{ if (current->nxt == NULL)

cout << "You are at the end of the list." <<>

else

current = current->nxt;

}

void move_current_back ()

{ if (current == start_ptr)

cout << "You are at the start of the list" <<>

else

{ node *previous; // Declare the pointer

previous = start_ptr;

while (previous->nxt != current)

{ previous = previous->nxt;

}

current = previous;

}

}

void main()

{ start_ptr = NULL;

do

{

display_list();

cout <<>

cout << "Please select an option : " <<>

cout << "0. Exit the program." <<>

cout << "1. Add a node to the end of the list." <<>

cout << "2. Delete the start node from the list." <<>

cout << "3. Delete the end node from the list." <<>

cout << "4. Move the current pointer on one node." <<>

cout << "5. Move the current pointer back one node." <<>

cout <<>> ";

cin >> option;

switch (option)

{

case 1 : add_node_at_end(); break;

case 2 : delete_start_node(); break;

case 3 : delete_end_node(); break;

case 4 : move_current_on(); break;

case 5 : move_current_back();

}

}

while (option != 0);

}

Download program file yang lebih lengkap klik disini







0 komentar

Followers

Visitor

 

Aloen Pop. Copyright 2008 All Rights Reserved Revolution Two Church theme by Brian Gardner Converted into Blogger Template by Bloganol dot com