Senin, 13 Mei 2013

Linked List

Diposting oleh Unknown di 10.06
Linked List (list bertaut) adalah salah satu struktur data dasar yang sangat fundamental dalam bidang ilmu komputer. Dengan menggunakan linked list maka programmer dapat menyimpan datanya kapanpun dibutuhkan. Linked list mirip dengan array, kecuali pada linked list data yang ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time).

Pada array, apabila programmer ingin menyimpan data, programmer diharuskan untuk mendefinisikan besar array terlebih dahulu, seringkali programmer mengalokasikan array yang sangat besar (misal 100). Hal ini tidak efektif karena seringkali yang dipakai tidak sebesar itu. Dan apabila programmer ingin menyimpan data lebih dari 100 data, maka hal itu tidak dapat dimungkinkan karena sifat array yang besarnya statik. Linked ist adalah salah satu struktur data yang mampu menutupi kelemahan tersebut.

Secara umum linked list tersusun atas sejumlah bagian-bagian data yang lebih kecil yang terhubung (biasanya melalui pointer). Linked list dapat divisualisasikan seperti kereta, bagian kepala linked list adalah mesin kereta, data yang disimpan adala gerbong dan pengait antar gerbong adalah pointer.

Persamaan linked list dengan array adalah sama-sama menyimpan sekumpuan data. Perbedaannya adalah dalam mengalokasikan memori. Array mengalokasikan memori untuk semua elemen dalam satu blok memori, sedangkan linked list mengalokasikan memori elemen per elemen pada saat program berjalan (dynamically), sehingga tempatnya di memori juga acak.


  • Contoh program :
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

struct mahasiswa {
     int nim;
     char nama[25];
     float nilai;
     struct mahasiswa *next;
     struct mahasiswa *prev;
     }*baru,*awal = NULL,*akhir = NULL,*bantu;

void input(){
     baru = (struct mahasiswa*) malloc(sizeof(struct mahasiswa));
     printf("NIM : ");scanf("%d", &baru->nim);
     printf("Nama : ");scanf("%s", &baru->nama);
     printf("Nilai : ");scanf("%f", &baru->nilai);
     }

void tampil(){
     printf("\nMenampilkan Data\n");
     printf("----------------\n");
     bantu = awal;
     if (awal == NULL) printf("\nKosong..");
     else {
           while (bantu != NULL){
                printf("\nNIM : %d",bantu->nim);
                printf("\nNama : %s",bantu->nama);
                printf("\nNilai : %0.2f\n",bantu->nilai);
                printf("-------------------\n");
                bantu = bantu->next;
                }
           }
     printf("\n\nTekan enter untuk kembali . . . ");
     getch();
     }

void tambah_depan(){
     printf("\nTambahkan Data Dari Depan\n");
     printf("-------------------------\n");
     input();
     baru->next = NULL;
     if (awal == NULL){
           awal = akhir = baru;
           awal->next = NULL;
           }
     else{
           baru->next = awal;
           awal = baru;
           }
     printf("Data berhasil di tambahkan \n");
     printf("\n\nTekan enter untuk kembali . . . ");
     getch();
     }
void tambah_belakang(){
     printf("\nTambahkan Data Dari Belakang\n");
     printf("----------------------------\n");
     baru = awal;
     input();
     baru->next = NULL;
     if (awal == NULL){
           awal = baru;
           }
     else{
           akhir->next = baru;
           }
     akhir = baru;
     akhir-> next = NULL;
     printf("Data berhasil di tambahkan \n");
     printf("\n\nTekan enter untuk kembali . . . ");
     getch();
     }

 void main(){
     int pilih;
     menu:
           clrscr();
           printf("\n      Linked List      \n");
           printf("===============================\n");
           printf("1. Tambahkan Data Dari Depan\n");
           printf("2. Tambahkan Data Dari Belakang\n");
           printf("3. Tampilkan Data\n");
           printf("4. Keluar\n");
           printf("-------------------------------\n");
           printf("\nPilihan anda : ");
           scanf("%d", &pilih);

           switch(pilih){
                case 1:
                           clrscr();
                           tambah_depan();
                           break;
                case 2:
                           clrscr();
                           tambah_belakang();
                           break;
                case 3:
                           clrscr();
                           tampil();
                           break;
                case 4:
                           _exit(0);
                          break;
                default:
                           printf("\nMaaf, Pilihan Tidak Tersedia");
                           getch();
                           break;
           }
           clrscr();
           goto menu;
     }  
  
  • Output program :















0 komentar:

Posting Komentar

What the fuck ヾ(´^ω^)ノ♪

Diberdayakan oleh Blogger.
 

♥ Wentii's Blog ♥ Template by Ipietoon Blogger Template | Gift Idea