Materi 2 - Linked List
description
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
**