Implementasi Linked List C++

 Pada blog ini akan membahas tentang implementasi linked list pada bahasa C++

Fungsi Dasar

Ada 5 fungsi dasar dalam linked list yakni sebagai berikut.

Inserting

Fungsi ini digunakan untuk melakukan insert kedalam node.

void insertion(Node*& node, int val){
    Node* newnode = new Node();
    newnode->data = val;
    newnode->next = node;
    node = newnode;
}

Deleting

Fungsi ini digunakan untuk menghapus node.

void deletion(Node* node, int val){
    if (node == NULL) return;
    if (node->data == val){
        Node* temp = node;
        node = node->next;
        delete temp;
        return;
    }
    Node* current = node;
    while(current->next != NULL && current->next->data != val){
        current = current->next;
    }
    if (current->next != NULL){
        Node* temp = current->next;
        current->next = current->next->next;
        delete temp;
    }
}

Traversal

Fungsi ini hanya mengeluarkan output berupa isi linked list.

void traversal(Node* node){
    Node* current = node;
    while (current != NULL){
        cout << current->data << "->";
        current = current->next;
    }
    cout << "NULL\n";
}

Searching

Fungsi ini bertujuan untuk mencari sebuah nilai pada sebuah node.

void searching(Node* node, int val){
    Node* current = node;
    while (current!=NULL){
        if(current->data == val){
            cout << "Data found";
            break;
        }
        current = current->next;
    }
}

Updating

Fungsi ini digunakan untuk merubah nilai sebuah node.

void updating(Node* node, int val, int update){
    Node* current = node;
    while(current!=NULL){
        if (current->data == val) current->data = update;
        current = current->next;
    }
}

Implementasi Lengkap

#include <bits/stdc++.h>
using namespace std;

struct Node{
    int data;
    Node* next;
};

void traversal(Node* node){
    Node* current = node;
    while (current != NULL){
        cout << current->data << "->";
        current = current->next;
    }
    cout << "NULL\n";
}

void insertion(Node*& node, int val){
    Node* newnode = new Node();
    newnode->data = val;
    newnode->next = node;
    node = newnode;
}

void deletion(Node* node, int val){
    if (node == NULL) return;
    if (node->data == val){
        Node* temp = node;
        node = node->next;
        delete temp;
        return;
    }
    Node* current = node;
    while(current->next != NULL && current->next->data != val){
        current = current->next;
    }
    if (current->next != NULL){
        Node* temp = current->next;
        current->next = current->next->next;
        delete temp;
    }
}

void searching(Node* node, int val){
    Node* current = node;
    while (current!=NULL){
        if(current->data == val){
            cout << "Data found";
            break;
        }
        current = current->next;
    }
}

void updating(Node* node, int val, int update){
    Node* current = node;
    while(current!=NULL){
        if (current->data == val) current->data = update;
        current = current->next;
    }
}

int main(void){
    Node* node = NULL;
    insertion(node, 30);
    insertion(node, 20);
    insertion(node, 10);
   
    cout << "Setelah insertion: \n";
    traversal(node);

    cout << "\nMencari angka 20: \n";
    searching(node, 20);

    cout << "\nUpdate angka 20 menjadi 25: \n";
    updating(node, 20, 25);
    traversal(node);

    cout << "\nHapus angka 25: \n";
    deletion(node, 25);
    traversal(node);
    return 0;
}


Untuk mengimplementasikan linked list tentunya harus membuat sebuah struct yang terdiri dari linked list value (data) dan node selanjutnya (next). Untuk melakukan operasi dengan fungsi yang sudah dibuat, isi fungsi sesuai parameter yang dibutuhkan. Berikut adalah output dari main program tersebut.


Source Code

https://github.com/xbggnr/Linked-list-implementation.git

-- Terima Kasih --










Komentar

Postingan Populer