09 Mei 2013

Pengurutan Menggunakan LinkedList (C)

Sebuah algoritma pengurutan angka sederhana yang dibuat dengan bahasa C. Iseng aku buat untuk menambah artikel blog ini.

Soal yang akan dipecahkan oleh program ini yaitu 
Mengurutkan angka 2, 3, 5, 6, 1, 8 , 3, 2, 1, 4, dan 9 sehingga urutan angka-angka tersebut menaik dari yang terkecil sampai yang terbesar dengan menggunakan LinkList.

Berikut ini source code yang dibuat dengan bahasa C.

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>


struct angka{
       struct angka *kiri;     
       char data;
       struct angka *kanan;
};

char tambahdata(struct angka **bt,char nilai){
        if(*bt==NULL){
          *bt=(struct angka*) malloc (sizeof(struct angka));
          if(*bt==NULL) return 0;
         
          (*bt)->kiri=NULL;
          (*bt)->data=nilai;
          (*bt)->kanan=NULL;                         
          return 1;
        } 
        else {
          if (nilai<((*bt)->data)){
             return tambahdata(&((*bt)->kiri),nilai);
          }
          else {
             return tambahdata(&((*bt)->kanan),nilai); 
          }   
        }    
}

void cetakdata(struct angka *bt)
{
        if(bt->kiri!=NULL){
          cetakdata(bt->kiri);                  
        }   
        if((bt->data!=NULL)){
          printf("%c ",bt->data);
        }
        if(bt->kanan!=NULL){
          cetakdata(bt->kanan);                  
        }
       
}

int main(void){
        struct angka *ptr;
        char karakter;
        char berhasil;
       
        ptr=NULL;
        printf("Solusi Pengurutan Angka\n");
        printf("-----------------------\n");
        printf("Masukkan Kumpulan Angka :\n");
       
        do{
          karakter=getchar();
          berhasil=tambahdata(&ptr,karakter);
          if (!berhasil){
            printf("Data gagal dimasukkan:\n");
            getch();
            return 0;             
          }                
        } while (karakter!= '\n');
       
        printf("\nData setelah diurutkan: \n");
       
        cetakdata(ptr);
       
        getch();
        return 0; 
}

Dan dibawah ini tampilan dari aplikasi tersebut.


Setelah data angka tersebut dimasukkan maka akan menampilkan angka yang sudah terurut.




Semoga bermanfaat...