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