Kamis, 05 Juli 2012

Rangkuman Mata Muliah Struktur Data"

A. Pembuka:
    Nama Mahasiswa: ade imam malik
   Nim: 6311023
   Alamat:jln sukaati gang sukaati7
   Kelas saat ini:1.TI-7
   Nama Matakuliah:struktur data
   Nama Dosen:dadan nurdin bagenda
   Nama Kampus: pkn&stimik lpkia bandung



gambar pemetannnya:                         
                                                          

struktur data
struktur data:cara penyimpanan data yang berupa fakta,klau secara rinci struktur itu adalah koleksi dari variabel yang dinyatakan dengan sebuah nama dengan sifat setiapa variabel dapat memiliki tife yang berlainan.
yang pertama di bahas didalam sesi pertama adalah tentang linier dan non linier:
 pengertian linier--->Fungsi Linier atau fungsi berderajat satu ialah fungsi yang pangkat tertinggi dari 
LINKED LIST

Linked list merupakan suatu variabel yang bertipe pointer yang membentuk
suatu untaian yang saling berhubungan. Tiap untaian tersebut diletakkan pada
memory. Tempat yang disediakan pada suatu area memori tertentu untuk
menyimpan data dikenal dengan sebutan Node/Simpul.

kalau linier itu mempunyai /terbagi menjadi 2 bagian yaitu: 
- single lingkd list
- double lingkd list
single lingkd list ===== sebuah node yang dihubungkan secara linier dengan bantuan pointer
contoh ilustrasinya seperti ini : --->---->------>-----> (1 arah)
ada juga beberapa hal yang menyangkut tentang single lingkd list:
1.lingkd list selalu memiliki pointer petunjuk yang selalu menunjuk pada awal dari list yang di sebut head.
2.lingkd list juga selalu memliki pointer petunjuk untuk menunjuk pada akhir dari list yang disebut TAIL, kecuali untuk jenis circular.

Double Linked List (DLL) adalah suatu cara pengolahan data yang bekerja dengan record dalam jumlah besar, sehingga membutuhkan alokasi memori dinamis yang besar pula. DLL biasanya digunakan pada saat alokasi memori konvensional tidak lagi bisa diandalkan. ---><---><---><----><---  (2 arah)
Macam-macam double lingkd list  sekaligus definisinya 
A.1 Definisi dari lingkd list yang circular
           Double Linked List Circular adalah linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu 1 field pointer yang menunjuk pointer berikutnya , 1 field menunjuk pointer sebelumnya serta sebuah field yang berisi data untuk node tersebut.
B.2 Definisi dari lingkd list yang non circular
         Double Linked List Non Circular adalah linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu 1 field pointer yang menunjuk pointer berikutnya  dan 1 field menunjuk pointer sebelumnya serta sebuah field yang berisi data untuk node tersebut.
 yang non linier terbagi3:
             -tree
             -binary tree
             -graph
single lingkd list non circular
hapus list terbagi 4 bagian:
              -statis
              -di depan:
Fungsi ini akan menghapus data terdepan yang ditunjuk oleh head. Penghapusan tidak boleh dilakukan jika keadaaanya ditunjuk oleh pointer
contoh hapus di depan
void hapusdepan()
{
                if(head==NULL)
                {
                                printf("data belum ada");
                }
                else
                if(head->next!=NULL)
                {
                                hapus=head;
                                head=head->next;
                                delete hapus;
                                printf("Data Terhapus\n");
                }
                else
                {
                                head=NULL;
                                printf("Data Terhapus\n");
                }
}

ilustrasi hapus depan:
HAPUS(menunjuk ke A)

A------>B------->C------->D----->NULL 

head(menunjuk ke A)                 tail(menunjuk ke D)

B------->C-------D------>NULL

head(jd menunjuk ke B)       tail(menunjuk ke D)

              -di belakang
          Karena adanya tail, maka penghapusan data dibelakang lebih mudah dilakukan. Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer. Oleh karena itu dilakukan penujukan terlebih dahulu variable hapus pada tail.
contoh hapus di belakang
void hapusbelakang()
{
                bantu=head;
                if(head==NULL)
                {
                                printf("data belum ada");
                }
                else
                if(head==tail)
                {
                                head=NULL;
                                printf("Data Terhapus\n");
                                tail=NULL;
                }
                else
                {
                                hapus=tail;
                                while(bantu->next!=tail)
                                {
                                                bantu=bantu->next;
                                }
                                tail=bantu;
                                tail->next=NULL;
                                delete hapus;
                                printf("Data Terhapus\n");
                }
}

              -di tengah
tambah list terbagi 4 bagian:
               di depan:
        Penambahan node baru akan dikaitkan di gerbong paling depan. Tetapi jika data masih kosong, maka penambahan data dilakukan denagn cara menunjuk head pada gerbong tersebut.

                                                                      di belakang:
       Penambahan data dibelakang akan selalu dikaitkan dengan tail karena tail selalu berada di paling belakang gerbong. setelah dikaitakn dengan node, maka node tersebut menjadi tail yang baru.
contoh program tambah list di belakang:
void tambahbelakang(int databaru)

{

                baru = new gerbong;

                baru->data=databaru;

                baru->next=NULL;

                if(head==NULL)

                {

                                head=baru;

                                head->next=NULL;

                                tail=baru;

                                tail->next=NULL;

                }

                else

                {

                                tail->next=baru;

                                tail=baru;

                }

                printf("data masuk\n");
}
               - di tengah


Tambah depan


Penambahan node baru akan dikaitkan di gerbong paling depan. Tetapi jika data masih kosong, maka penambahan data dilakukan denagn cara menunjuk head pada gerbong tersebut.

Ilustrasi Tambah depan :


baru

A ------->B----->C----->D-----> NULL


               FFFF       FFFF    FFFF   FFFF

head(menunjuk ke A)                             TAIL(menunjuk ke D)

                              data baru ditambahkan