LINKED LIST
Linked list adalah struktur data yang terdiri dari rangkaian elemen-elemen yang disebut node. Setiap node dalam linked list berisi dua komponen utama:
-Data: Menyimpan nilai atau informasi yang terkait dengan node tersebut.
-Pointer/Referensi: Menunjuk ke node berikutnya dalam rangkaian.
Keunikan dari linked list adalah elemen-elemennya tidak disimpan dalam lokasi memori yang berurutan, berbeda dengan array. Sebaliknya, setiap node menunjuk ke node berikutnya, memungkinkan elemen-elemen untuk disimpan di lokasi memori yang berbeda-beda.
-Singly Linked List: Setiap node hanya memiliki satu pointer yang menunjuk ke node - berikutnya. Node terakhir menunjuk ke null, menandakan akhir dari linked list.
-Doubly Linked List: Setiap node memiliki dua pointer, satu menunjuk ke node berikutnya dan satu lagi menunjuk ke node sebelumnya. Ini memungkinkan traversal (penelusuran) dalam kedua arah, maju dan mundur.
-Circular Linked List: Node terakhir dalam linked list menunjuk kembali ke node pertama, membentuk lingkaran. Ini bisa diterapkan pada singly linked list maupun doubly linked list.
Berikut adalah salah satu contohnya :
// judul : membuat rangkaian data tanpa menggunakan array
// data dituangkan dalam bentuk lain, yaitu linked list
// adapun data yang diakan dirangkai adalah 11 9 7 5 3 1
// tanpa menggunakan input, jika ingin lebih menarik
// silakan dengan inputan dan sertakan loop u/ sejumlah n bil
#include “iostream”
using namespace std; // menyertakan standard namespace
// kamus
// Mendeklarasikan type bentukan node
struct Node
{
int num;
Node *next;
};
// awal (Head) node
struct Node *head=NULL; // null kosong
// Function untuk menambahkan node ke linklist
void insert_Node(int n)
{
struct Node *new_node=new Node; // membuat node baru
new_node->num=n; // memberikan data pada node baru
new_node->next=head; // memberikan marker / penunjuk pada node baru tersebut head
head=new_node; // menjadikan node tersebut sebagai head
}
// membalik
void reverse()
{
// Setting posisi, sebelum dan sesudah
Node* current = head;
Node *prev = NULL, *next = NULL;
while (current != NULL)
{
// menyimpan alamat / pointer selanjutnya
next = current->next;
// membalik pointer / alamat untuk node saat ini
current->next = prev;
// memposisikan
prev = current;
current = next;
}
head = prev;
}
// Function untuk menghitung banyakknya node pada linkedlist
int count_Nodes()
{
// Create a temporary node (tmp) pointing to the head.
Node* tmp = head;
int ctr = 0;
while(tmp != NULL)
{
ctr++;
tmp = tmp->next;
}
return ctr;
}
// Function untuk menambah 1 node di depan pada linkedlist
void NodeInsertatBegin(int new_element)
{
// Create a new node
Node* new_Node = new Node();
new_Node->num = new_element; // Assigning data to the new node
new_Node->next = head; // Pointing the new node to the current head
head = new_Node; // Making the new node as the head
}
// Function untuk menambah belakang pada linkedlist
void push_back(int newElement)
{
Node* new_Node = new Node(); // Creating a new node
new_Node->num = newElement; // Assigning data to the new node
new_Node->next = NULL; // Initializing the next pointer of the new node to NULL
if(head == NULL) { // Checking if the linked list is empty
head = new_Node; // If empty, make the new node as the head
}
else {
Node* temp = head; // Temporary node to traverse the list
while(temp->next != NULL) // Loop to reach the last node
temp = temp->next; // Move to the next node
temp->next = new_Node; // Pointing the last node’s next to the new node
}
}
// Function untuk menampilkan all data/node pada linkedlist
void display_all_nodes()
{
cout<<”berikut rangkaian data pada linked list :\n”;
struct Node *temp = head; // node sementara untuk menampung linked list
while(temp!=NULL)
{
cout<<temp->num<<” “; // menampilkan isi node
temp=temp->next; // untuk node berikut nya
}
cout<<endl;
}
// diskripsi
int main()
{
// memfungsikan function insert node
insert_Node(1);
insert_Node(3);
insert_Node(5);
insert_Node(7);
insert_Node(9);
insert_Node(11);
display_all_nodes(); // memanggil function tampilkan isi
int ctr = count_Nodes(); // memanggil function count
reverse();
display_all_nodes(); // memanggil function tampilkan isi
NodeInsertatBegin(0);
display_all_nodes(); // memanggil function tampilkan isi
push_back(15);
cout << ctr << endl; // menampilkan hasil count
display_all_nodes(); // memanggil function tampilkan isi
return 0;
}
Dan ini hasilnya :

Komentar
Posting Komentar