Kamis, 29 Desember 2016

LA Struktur Data : Single Linked List




Program ini menggunakan 2 header yaitu stdio dan stdlib. Struct node * del merupakan perintah untuk menghapus node yang ada di dalam list pada posisi tertentu.  Length digunakan untuk menentukan panjang node. Kemudian membuat record struct node yang berisi variabel data betipe integer dan variabel link yang bertipe pointer dengan tipe struct node.


Struct node * insert digunakan untuk memasukkan data pada variabel pointer *head. Membuat variabel pointer *temp. Membuat kondisi jika variabel head tidak memiliki nilai (Null) maka nilainya sama dengan alokasi memori pada struct node karena ada perintah malloc. Kemudian ada kondisi lagi jika jika variabel head tidak memiliki nilai (Null) maka akan print “error” dan keluar program.

Selain kondisi diatas, maka akan memberi nilai variabel temp sama dengan head. Menggunakan perulangan while dengan syarat selama nilai temp yang diakses oleh link tidak sama dengan NULL, maka akan menjalankan nilai temp sama dengan nilai temp yang diakses oleh link (temp-> link). Kemudian memberikan nilai baru pada temp-> link sama dengan alokasi memori pada struct node. Kemudian dibuat kondisi jika nilai temp->link sama dengan NULL maka akan di cetak “error” dan keluar dari program. Kemudian memberi nilai temp sama dengan nilai temp->link; nilai temp->data sama dengan nilai n; dan nilai temp -> link sama dengan NULL. Setelah keluar dari else program akan mengembalikan nilai head.


Membuat class printlist dengan pointer *pnode. Menggunakan percabangan jika nilai pnode tidak sama dengan NULL maka akan menjalankan perulangan while. Perulangan akan dijalankan selama nilai pnode tidak sama dengan NULL. Perulangan yang dijalankan adalah mencetak nilai dari pnode->data, kemudian memberi nilai baru pada variabel pnode sama dengan nilai pnode->link. Selain kondisi diatas, maka akan mencetak “Linkedlist Kosong”.



Ini merupakan kelas utama. Mendeklarasikan variabel n, x, i yang bernilai 0. Kemudian membuat pointer *start dengan nilai NULL. Mencetak string dan kemudian mengambil inputan dan memasukan nilai tersebut kedalam n. kemudian menggunakan perulangan for. Untuk nilai i sama dengan 0, selama nilai i lebih kecil dari n maka perulangan akan tetap berjalan, nilai i bertambah 1 setiap perulangan. Statement yang dijalankan adalah mencetak string kemudian mengambil inputan dan memasukkan nilai tersebut kedalam n. fflush(stdin) berfungsi menghapus input buffer. Kemudian memasukkan nilai ke pointer start sama dengan nilai start pada address ke-x.
Kemudian mencetak string dan semua isi (list) pointer start. Mencetak string lagi, mengambil inputan dan memasukkan ke dalam variabel n. Lalu menghapus nilai start address ke-n. Cetak string lalu mencetak isi (list) start yang baru. System(“pause”) digunakan agar layar tidak langsung menutup setelah program selesai.


Blok ini mendeklarasikan isi dari struct node * del dan membuat variabel counter node_no. Membuat pointer *prev dan *curr serta variabel i. Kemudian struktur kondisi jika nilai head sama dengan NULL maka akan mencetak string. Selain kondisi tersebut, maka akan memberikan nilai prev = NULL; curr = head; dan i=1. Kemudian melakukan perulangan dengan kondisi selama nilai i lebih kecil dari node_no maka perulangan tetap berjalan. Perulangan berisi statement memberi nilai prev=curr; curr=head; dan i=i+1.
Ada kondisi lagi, jika nilai prev sama dengan NULL maka nilai head adalah nilai curr yang diakses oleh link dan mengembalikan nilai curr dengan perintah free. Selain kondisi diatas maka akan dijalankan nilai prev->link sama dengan nilai curr->link dan mengembalikan nilai curr dengan perintah free

 
 
Blok ini menjelaskan isi dari length. Mendeklarasikan variabel pjg =0. Menggunakan perulangan while dengan kondisi selama nilai pnode tidak sama dengan NULL maka perulangan akan terus berjalan. Isi dari perulangan adalah nilai pjg bertambah 1 dan nilai pnode sama dengan pnode->link. Setelah keluar maka akan mengembalikan nilai pjg



OUTPUT