Jumat, 07 Maret 2014

LINKED LIST DI STRUTUR DATA 7-3-2014

linked list : suatu cara membuat kumpulan data yang berisi bermacam-macam data dan bersifat dinamis yang artinya jumlah kumpulan data di dalam memory akan berubah-ubah sesuai jumlah inputan data user;

data- data yang dimasukan dalam linked list di sebut node

example:
struct Mahasiswa{
    char nama[25];
    int usia;
    struct Mahasiswa *next;
}*head, *tail;


linked list dibagi jadi banyak:

1) pushHead/ pushDepan
menambahkan node(data) di awal, jadi setiap node yang ditambah node itu akan di masukan ke awal node;
example:
 void pushDepan(char nama[],int usia){
    struct Mahasiswa *curr = (struct Mahasiswa*) malloc(sizeof(struct Mahasiswa));
    strcpy(curr->nama,nama);
    curr->usia = usia;
    if(head == NULL){
        head = tail = curr;
        tail->next = NULL;
    }else{
        curr->next = head;
        head = curr;
    }
}



2)pushTail/pushBelakang
menambahkan node(data) di akhir, jadi setiap node yang ditambah node itu akan di masukan ke akhir node ;
void pushBelakang(char nama[], int usia){
    struct Mahasiswa *curr = (struct Mahasiswa*) malloc(sizeof(struct Mahasiswa));
    strcpy(curr->nama,nama);
    curr->usia = usia;
    if(head == NULL){
        head = tail = curr;
    }else{
        tail->next = curr;
        tail = curr;      
    }
    tail->next = NULL;
}


3)print/cetak
fungsi ini hanya untuk mencetak linked list;
example:
void print(){
    struct Mahasiswa *curr;
    printf("=====================================================\n");
    printf("| %-23s | %-23s |\n","Nama Mahasiswa","Usia");
    printf("=====================================================\n");




//menggunakan for
    for(curr=head;curr!=NULL;curr=curr->next){
        printf("| %-23s | %-23d |\n",curr->nama,curr->usia);
    }

//menggunakan while
        curr = head;
        while(curr){
            printf("| %-23s | %-23d |\n",curr->nama,curr->usia);
            curr=curr->next;
        }
    printf("=====================================================\n");
}










4)popDepan/popHead
menghapus node yang ada di paling depan;
example:
void popDepan(){
    if(head){
        struct Mahasiswa *curr = head;
        if(head == tail){
            //1
            head = tail = NULL;
            free(curr);
        }else{
            //>1
            head = head->next;
            free(curr);
        }
    }else{
        printf("No more data to be deleted..\n\n");
    }
}



5)popBelakang/popTail
menghapus node yang ada di paling belakang;
void popBelakang(){
    if(head){
        struct Mahasiswa *curr = head;
        if(head == tail){
            //1
            head = tail = NULL;
            free(curr);
        }else{
            //>1
            while(curr->next != tail){
                curr=curr->next;
            }
            tail = curr;
            free(curr->next);
            tail->next = NULL;
        }
    }else{
        printf("No more data to be deleted..\n\n");
    }
}



6)popAll
menghapus semua node yang ada
example:
void popAll()
{
    curr=head;
    while(curr)
    {
        head=head->next;
        free(curr);
        curr=head;
    }
    head=tail=NULL;
}

berikut cara menukar data tanpa menggunakan temporary:
example:
void tukar(int *a, int *b){
    *a ^= *b ^= *a ^= *b;
}
void main()
{
    int angka = 20;
    int angka2 = 30;

    tukar(&angka,&angka2);
    printf("%d %d",angka, angka2);
}

tambahan istilah-istilah :
Queue = awal
Rear=belakang
Circular Queue= antrian yang berputar
FIFO(menganut sistem first in first out)

Stacks:
Top=data / node yang ada di paling atas
instacks=masuk
destacks=keluar
enqueue=Push
dequeue=Pop
LIFO(menganut sistem last in first out)

beda b.tree dan b.s.tree
binary tree: kita tentuin sendiri letaknya dimana
binary search tree memiliki ketentuan bahwa bilangan yang lebih kecil harus disebelah kiri dan mempunyai keuntungan membuat pencarian lebih cepat

Tipe data: float, int, char, long, double,void ,sign, unsign
int= bilangan riil;
long= kapasitasnya (2^32);
float = jumlah angka di belakang koma panjang
double =  jumlah angka di belakang koma dua kali float.
baris=row=record
kolom=field

sumber:
skyconnectiva dan binus

Tidak ada komentar:

Posting Komentar