DOSEN PENGAMPU :
Marji, Drs., M.T
DITULIS OLEH :
UNIVERSITAS BRAWIJAYA
FAKULTAS ILMU KOMPUTER
TEKNIK KOMPUTER
2018
BAB I
PENDAHULUAN
Penggunaan Linked List sangat berguna dalam struktur data. Linked list terbagi
ke dalam tiga bentuk . Salah satu varian dari Linked List adalah Circular Linked List
yang mempunyai dua field setiap node-nya, yaitu field pointer yang menunjuk ke
node setelahnya dan sebuah field yang berisi data untuk node tersebut. Perbedaan
antara Linked List dengan Circular Linked List adalah pada Circular Linked List
pointer node terakhirnya mengarah ke node awal. Adapun struktur dari Circular
Linked List ditampilkan pada gambar berikut.
Circular Linked List terdiri dari Circular Single Linked List dan Circular Double
Linked List. Pada gambar di atas merupakan contoh Circular Single Linked List,
karena hanya memiliki satu buah pointer dan arahnya hanya ke node setelahnya.
Ketika node baru terbentuk, pointer-nya menunjuk ke dirinya sendiri. Jika sudah lebih
dari satu node, maka pointer-nya menunjuk ke node setelahnya dan pointer node akhir
menuju ke node awal.
Sorting, Pengurutan data (sorting) didefinisikan sebagai suatu proses untuk
menyusun kembali humpunan obyek menggunakan aturan tertentu.
Menurut Microsoft Book-shelf, definisi algoritma pengurutan adalah algoritma
untuk meletakkan kumpulan elemen data ke dalam urutan tertentu berdasarkan satu
atau beberapa kunci dalam tiap-tiap elemen.
Ada dua macam urutan yang biasa digunakan dalam proses pengurutan yaitu
• urut naik (ascending) yaitu dari data yang mempunyai nilai paling kecil sampai
palingbesar
• urut turun (descending) yaitu data yang mempunyai nilai paling besar sampai paling
kecil.
Contoh : data bilangan 5, 2, 6 dan 4 dapat diurutkan naik menjadi 2, 4, 5, 6 atau
diurutkan turun menjadi 6, 5, 4, 2.
Pada data yang bertipe char, nilai data dikatakan lebih kecil atau lebih besar
dari yang lain didasarkan pada urutan relatif (collating sequence) seperti dinyatakan
dalamtabel ASCII
1.2 Rumusan Masalah
Pembahasan masalah yang akan dijabarkan pada makalah ini antara lain :
1. Bagaimana Cara Penggunaan Metode Sorting pada Circular Single List?
1.3 Tujuan
Untuk memahami kegunaan dan dasar pada Circular Single List dan Sorting
Data .
Selain itu tujuan dibuat makalah ini diharapkan dapat sebagai sarana
penyebaran ilmu pengetahuan dan tidak luput pula sebagai pemenuhan tugas dari
mata kuliah Algoritma & Struktur Data.
BAB II
PEMBAHASAN
#include <cstdlib>
#include <iostream>
#include <conio.h>
struct node {
string nama;
int id;
struct node *next;
//struct node *prev;
};
typedef struct node node;
node *head, *tail;
int jumlahtotal=0;
void tambah(node *pNew){
if (head == NULL)head=tail=pNew;
else {
pNew->next = head;
//head->prev = pNew;
//pNew->prev = tail;
tail->next = pNew;
}
tail=pNew;
jumlahtotal++;
}
void tampil()
{
node *bantu;
bantu = head;
int jumlah = 0;
if (head == NULL) cout << "List Kosong" << endl;
else do{
jumlah++;
cout << jumlah << ".\tNama\t: " << bantu->nama << endl;
cout << "\tID\t: " << bantu->id << endl;
bantu = bantu->next;
}while(bantu!=head&&bantu!=NULL);
}
void tukar(node *a, node *b){
/*node *temp = b->next;
b->next = a->next;
a->next = temp;
temp = b;
b = a;
a = temp;*/
string tempnama;
int tempid;
tempnama = b->nama;
tempid = b->id;
b->nama = a->nama;
b->id = a->id;
a->nama = tempnama;
a->id = tempid;
cout << "Sedang menukar" << endl;
}
void sortNama(){
int i, j, k, l;
node *bantu1, *bantu2;
bantu1 = head;
for(i=1; i<jumlahtotal-1; i++){
bantu2=bantu1;
for(j=jumlahtotal-1; j>=i; j--){
for(k=1; k<jumlahtotal-1; k++) bantu2 = bantu2->next;
if(bantu2->nama[i] > bantu2->next->nama[i])
tukar(bantu2, bantu2->next);
bantu2=bantu2->next;
}
bantu1=bantu1->next;
}
}
void sortid(){
int i, j, k;
node *bantu1, *bantu2;
bantu1 = head;
for(i=1; i<jumlahtotal-1; i++){
bantu2=bantu1;
for(j=jumlahtotal-1; j>=i; j--){
for(k=1; k<jumlahtotal-1; k++) bantu2 = bantu2->next;
if(bantu2->id > bantu2->next->id)
tukar(bantu2, bantu2->next);
bantu2=bantu2->next;
}
bantu1=bantu1->next;
}
}
int main(){
node *temp ;
char pilihan='0';
do{
cout << "Menu :\n";
cout << "1. Tambah Data\n";
cout << "2. Lihat Data\n";
cout << "3. Sort Data menurut nama\n";
cout << "4. Sort Data menurut id\n";
cout << "0. Keluar\n";
cout << "Pilihan anda : "; cin >> pilihan;
cout << "--------------------------------\n";
switch(pilihan){
case '1' :
temp = new node;
cin.ignore();
cout << "Masukkan Nama\t: "; getline(cin, temp->nama);
cout << "Masukkan ID\t: "; cin >> temp->id;
cin.ignore();
tambah(temp);
break;
case '2':
tampil();
break;
case '3':
sortNama();
cout << "Data telah diurutkan berdasarkan nama. . . \n";
break;
case '4':
sortid();
cout << "Data telah diurutkan berdasarkan id. . . \n";
break;
}
1.2 Hasil
BAB III
PENUTUP
3.1 Kesimpulan
Circular Linked List adalah pada Circular Linked List pointer node terakhirnya
mengarah ke node awal
Pengurutan data (sorting) didefinisikan sebagai suatu proses untuk menyusun
kembali humpunan obyek menggunakan aturan tertentu.
Pada Program Kami masih terdapat Bug jadi Laporan ini belumlah maksimal
namun dengan pertimbangan teman-teman nanti akan adanya maintenance pada
program kami dan kami usahakan sesuai dengan output yang di harapkan