Anda di halaman 1dari 7

MAKALAH ALGORITMA & STRUKTUR DATA

Implementasi Metode Sorting Pada Circular Single


List

DOSEN PENGAMPU :
Marji, Drs., M.T

DITULIS OLEH :

Hamdan Zuhdi D.A 185150300111046 2018


Bambang Gunawan Tanjung 185150300111051 2018
Andre Adikusuma 185150300111049 2018

UNIVERSITAS BRAWIJAYA
FAKULTAS ILMU KOMPUTER
TEKNIK KOMPUTER
2018
BAB I
PENDAHULUAN

1.1 Latar Belakang

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

1.1 Source Code Pada Aplikasi Codeblock

#include <cstdlib>
#include <iostream>
#include <conio.h>

using namespace std;

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;
}

cout << "--------------------------------\n";


}
while (pilihan != '0');
getch();
return EXIT_SUCCESS;
/*node *temp = new node, *temp2= new node, *temp3 = new node;
temp->id = 132;
temp->nama = "Hamdan";
tambah(temp);
temp2->id = 322;
temp2->nama = "Dewa";
tambah(temp2);
tampil();
temp3->id = 133;
temp3->nama = "Zuhdi";
tambah(temp3);
cout << "Data :\n";
tampil();
system("pause");
cout << "Setelah sorting\n";
sortid();
tampil();
system("pause");
cout << "coba-coba\n";
tukar(temp2,temp3);
tampil();*/
}

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

Anda mungkin juga menyukai