Materi 2 - Linked List

29

description

Tentang Lined list

Transcript of Materi 2 - Linked List

  • Memory Allocation (malloc) adalah sebuah fungsi fasilitas untuk memesan tempat secara berurutan untuk tipe data dinamis(pointer)Nilai balik dari memory allocation adalah void *

  • Bagaimana jika kita pesan 50000 alamat berurutan?Akan selalu gagal.Untuk itu kita lakukan memory allocation untuk setiap satu data.Bagaimana agar data pertama tetap berhubungan dengan data kedua?Kita gunakan pointer untuk menghubungkan

  • Linked lists are unbounded(maximum number of items limited only by memory)

  • Linked lists are unbounded(maximum number of items limited only by memory) Array : int A[3]Linked List : struct list *A;

    A[2]A[1]A[0]

    A(data 3)

    A(data 2)A(data 1)

  • struct simpul{char nama[25];int nrp;struct simpul *next;};struct simpul *ujung;

    namanrp

    nextsimpuldatapointer yg menunjuk simpul lain

  • Apa yang harus dilakukan?DeklarasiMemory allocationMengisi dataMenyiapkan untuk dihubungkan dengan data baru berikutnya

  • struct simpul *ujung;ujung=(struct simpul*)malloc(sizeof(struct simpul));printf("Nama:");scanf("%s",&ujung->nama);printf("NRP:");scanf("%d",&ujung->nrp);if(j==0){ujung->next=NULL;tampung=ujung;}

    nama1nrp1nextujungtampungNULL

  • ujung=(struct simpul*)malloc(sizeof(struct simpul));printf("Nama:");scanf("%s",&ujung->nama);printf("NRP:");scanf("%d",&ujung->nrp);if(j0){ujung->next=tampung;tampung=ujung;}nama2nrp2nextujungnama1nrp1nextNULLtampungnama2nrp2nextujungtampung

  • ujung=(struct dtnilai*)malloc(sizeof(struct dtnilai));printf("Nama:");scanf("%s",&ujung->nama);printf("NRP:");scanf("%d",&ujung->nrp);if(j0){ujung->next=tampung;tampung=ujung;}nama3nrp3nextujungnama1nrp1nextNULLtampungnama2nrp2nextnama3nrp3nextujungtampung

  • nama1nrp1nextNULLtampungnama2nrp2nextnama3nrp3nextnama4nrp4nextujung

  • nama1nrp1nextNULLtampilnama2nrp2nextnama3nrp3nextnama4nrp4nextujungtampil = ujung;while (tampilNULL)// fungsi menampilkantampil = tampil -> next;tampiltampiltampiltampil

  • nama1nrp1nextNULL carinama2nrp2nextnama3nrp3nextnama4nrp4nextujungcari = ujung;while (cari->nama!=nama2){cari = cari->next;}

    cari cari

  • nama1nrp1next carinama2nrp2nextnama3nrp3nextnama4nrp4nextujungcari = ujungwhile (cari->next !=NULL) cari = cari->next;cari->next=baru;

    namaxnrpxnextbaruNULL cari cari cariNULL

  • nama1nrp1nextNULL hapusnama2nrp2nextnama3nrp3nextnama4nrp4nextujunghapus = ujung;

  • nama1nrp1nextNULL hapusnama2nrp2nextnama3nrp3nextnama4nrp4nextujungwhile (hapus->nama != nama2){sbl = hapus;hapus=hapus->next;}

  • nama1nrp1nextNULL hapusnama2nrp2nextnama3nrp3nextnama4nrp4nextujungwhile (hapus->nama != nama2){sbl=hapus;hapus=hapus->next;} sbl

  • nama1nrp1nextNULL hapusnama2nrp2nextnama3nrp3nextnama4nrp4nextujungwhile (hapus->nama != nama2){sbl=hapus;hapus=hapus->next;} sbl

  • nama1nrp1nextNULL hapusnama2nrp2nextnama3nrp3nextnama4nrp4nextujungsbl->next=hapus->next; sbl

  • nama1nrp1nextNULLnama3nrp3nextnama4nrp4nextujungfree(hapus); sbl

  • nama1nrp1nextNULL carinama2nrp2nextnama3nrp3nextnama4nrp4nextujungcari = ujungnamaxnrpxnextbaru

  • nama1nrp1nextNULL carinama2nrp2nextnama3nrp3nextnama4nrp4nextujungwhile (cari->nama!=nama3)cari = cari->next;baru->next = cari->next;namaxnrpxnextbaru

  • nama1nrp1nextNULL carinama2nrp2nextnama3nrp3nextnama4nrp4nextujung

    cari->next = baru;namaxnrpxnextbaru

  • nama1nrp1nextNULL carinama2nrp2nextnama3nrp3nextnama4nrp4nextujungcari = ujungnamaxnrpxnextbaru

  • nama1nrp1nextNULL stlnama2nrp2nextnama3nrp3nextnama4nrp4nextujungcari = ujung;while (cari->nama!=nama1) stl=cari; cari=cari->next;namaxnrpxnextbaru cari

  • nama1nrp1nextNULL stlnama2nrp2nextnama3nrp3nextnama4nrp4nextujungcari = ujung;while (cari->nama!=nama1) stl=cari; cari=cari->next;namaxnrpxnextbaru cari

  • nama1nrp1nextNULL stlnama2nrp2nextnama3nrp3nextnama4nrp4nextujungcari = ujung;while (cari->nama!=nama1) stl=cari; cari=cari->next;namaxnrpxnextbaru cari

  • nama1nrp1nextNULL stlnama2nrp2nextnama3nrp3nextnama4nrp4nextujungbaru->next = cari;namaxnrpxnextbaru cari

  • nama1nrp1nextNULL stlnama2nrp2nextnama3nrp3nextnama4nrp4nextujungstl->next = baru;namaxnrpxnextbaru cari

    **