Jurusan Informatika
Fakultas Teknik Industri
Universitas Pembangunan Nasional “Veteran” Yogyakarta
Struktur
Data
Andi Nurkholis, S.Kom., M.Kom.
Pointer &
Linked List
8 September 2025
Pengantar Pointer dan Linked List
Pointer adalah konsep penting dalam pemrograman, khususnya di C dan C++,
yang menyimpan alamat memori suatu data dan memungkinkan pengelolaan
memori secara efisien.
Konsep ini menjadi dasar pembentukan struktur data dinamis seperti linked
list, yang tersusun dari node-node saling terhubung melalui pointer.
Berbeda dengan array yang tersimpan berurutan di memori, linked list dapat
berubah ukurannya sesuai kebutuhan, sehingga lebih fleksibel untuk
penyimpanan dan manipulasi data.
Konsep
Pointer
1. Definisi Pointer
2. Deklarasi Pointer
3. Penggunaan Pointer
4. Manfaat Pointer
5. Pointer dalam Struktur Data
Definisi Pointer
Pointer adalah variabel yang menyimpan alamat memori dari variabel lain.
Dengan menggunakan pointer, kita dapat mengakses dan memanipulasi data
yang ada di memori tanpa perlu menduplikasi data tersebut. Pointer adalah
variabel khusus dalam bahasa pemrograman seperti C dan C++ yang digunakan
untuk menyimpan alamat memori dari variabel lain.
ü Variabel biasa menyimpan nilai data (contoh: int x = 10; → x menyimpan 10).
ü Pointer menyimpan alamat memori tempat data tersebut disimpan (contoh: int
*p = &x; → p menyimpan alamat memori x).
Deklarasi Pointer
Pointer harus dideklarasikan sebelum digunakan. Untuk mendeklarasikan
pointer, kita menggunakan tanda * (asterisk) sebelum nama pointer. Contoh:
int *ptr; // Pointer untuk menyimpan alamat variabel tipe integer
Keterangan penting:
ü tipe_data memastikan bahwa pointer hanya digunakan untuk menunjuk ke
alamat variabel bertipe tersebut.
ü Pointer yang belum diinisialisasi tidak boleh digunakan karena nilainya acak
dan dapat menyebabkan runtime error.
Penggunaan Pointer
ü Mengambil Alamat Variabel: Untuk mendapatkan alamat variabel, kita
menggunakan operator &.
int a = 5;
int *ptr = &a; // Pointer ptr menyimpan alamat dari variabel a
ü Mengakses Nilai Melalui Pointer: Untuk mengakses dan memanipulasi nilai
yang ditunjuk oleh pointer, kita menggunakan operator * (dereferencing
operator).
printf("%d", *ptr); // Menampilkan nilai a melalui pointer
*ptr = 10; // Mengubah nilai a menjadi 10
Manfaat Pointer
ü Pengelolaan Memori yang Dinamis: Dengan pointer, program dapat
mengalokasikan dan membebaskan memori saat runtime menggunakan fungsi
seperti malloc(), calloc(), dan free(). Ini penting untuk data yang ukurannya
tidak diketahui saat kompilasi.
ü Membentuk Struktur Data Kompleks: Struktur data seperti linked list, stack,
queue, tree, dan graph dibangun dengan menggunakan pointer untuk
menghubungkan satu elemen dengan elemen lainnya.
ü Efisiensi Pemrosesan Data: Pointer memungkinkan pengoperan alamat
memori ke fungsi daripada menyalin seluruh data, sehingga menghemat
waktu dan ruang memori (pass by reference).
Manfaat Pointer
ü Manipulasi Data Secara Tidak Langsung: Pointer memungkinkan perubahan
nilai variabel dari luar lingkup fungsi atau blok program.
ü Interaksi dengan Perangkat Keras dan Sistem Operasi: Pointer digunakan
untuk mengakses alamat memori tertentu, yang menjadi dasar dalam
pemrograman sistem, pengelolaan buffer, dan komunikasi perangkat keras.
Pointer Dalam Struktur Data
Dalam Struktur Data, pointer menjadi elemen kunci untuk:
ü Linked List: setiap node menyimpan pointer ke node berikutnya.
ü Tree: setiap node menyimpan pointer ke anak kiri dan anak kanan.
ü Graph: pointer digunakan untuk menghubungkan simpul-simpul dalam bentuk
adjacency list.
ü Dynamic Array: pointer digunakan untuk merujuk pada blok memori yang
dapat diperbesar atau diperkecil.
Konsep
Linked List
1. Definisi Linked List
2. Jenis-jenis Linked List
3. Keuntungan Linked List
dibandingkan Array
Definisi Linked List
Linked list adalah salah satu struktur data dinamis yang terdiri dari
sekumpulan elemen yang disebut node, di mana setiap node menyimpan data
dan pointer (atau link) yang menunjuk ke node berikutnya (atau node lain
tergantung jenisnya). Berbeda dengan array yang menyimpan elemen secara
bersebelahan di memori, linked list menyimpan elemen di lokasi memori yang
tidak harus berurutan, tetapi terhubung melalui pointer.
Struktur Node pada Linked List: Setiap node dalam linked list biasanya terdiri
dari dua bagian:
ü Data: Menyimpan nilai atau informasi.
ü Pointer: Menunjuk ke node berikutnya.
Jenis Linked List
Terdapat tiga jenis Linked List:
ü Singly Linked List: Setiap node hanya memiliki pointer ke node berikutnya.
ü Doubly Linked List: Setiap node memiliki dua pointer: satu ke node
berikutnya dan satu ke node sebelumnya. Ini memungkinkan traversal maju
dan mundur.
ü Circular Linked List: Node terakhir menunjuk kembali ke node pertama,
membuat daftar bersifat melingkar.
Linked List & Array
Keuntungan Linked List dibandingkan Array:
ü Ukuran Dinamis: Dapat bertambah atau berkurang sesuai kebutuhan tanpa
harus menentukan ukuran sejak awal.
ü Penyisipan dan Penghapusan Cepat: Operasi sisip/hapus di awal atau
tengah list cukup dengan memodifikasi pointer tanpa memindahkan elemen
lain.
ü Efisiensi Pemakaian Memori: Memori dialokasikan hanya saat diperlukan,
tidak perlu memesan blok besar sekaligus seperti pada array.
Linked List & Array
ü Mengurangi Fragmentasi Memori: Tidak memerlukan blok memori
bersebelahan; setiap node dapat ditempatkan di lokasi memori yang berbeda.
ü Fleksibilitas Struktur Data: Memudahkan pembentukan struktur data
kompleks seperti stack, queue, deque, graph, dan tree.
ü Kemudahan Reorganisasi Data: Perubahan urutan elemen dapat dilakukan
hanya dengan memodifikasi pointer tanpa menyalin seluruh isi list.
Operasi Dasar
Linked List
1. Inisialisasi Linked List
2. Menambahkan Elemen (Insertion)
3. Menghapus Elemen (Deletion)
4. Traversing Linked List
Kelebihan Linked List
ü Fleksibilitas Ukuran: Linked list dapat dengan mudah diperluas tanpa
batasan ukuran, beradaptasi dengan jumlah elemen yang diperlukan.
ü Inserting dan Deleting yang Efisien: Menambahkan dan menghapus elemen
dapat dilakukan dengan cepat tanpa perlu menggeser elemen lain.
Kekurangan Linked List
ü Akses yang Lebih Lambat: Waktu akses untuk menemukan elemen tertentu
lebih lambat dibandingkan dengan array (O(n)).
ü Penggunaan Memori Tambahan: Karena setiap node memerlukan
penyimpanan untuk pointer, penggunaan memori bisa jadi lebih besar
dibandingkan array.
ü Kompleksitas Implementasi: Linked list lebih kompleks untuk
diimplementasikan dan dipahami jika dibandingkan dengan array.
Jurusan Informatika
Fakultas Teknik Industri
Universitas Pembangunan Nasional “Veteran” Yogyakarta
Andi Nurkholis, S.Kom., M.Kom.
8 September 2025
Sekian
Terima
Kasih

Struktur Data - 4 Pointer & Linked List

  • 1.
    Jurusan Informatika Fakultas TeknikIndustri Universitas Pembangunan Nasional “Veteran” Yogyakarta Struktur Data Andi Nurkholis, S.Kom., M.Kom. Pointer & Linked List 8 September 2025
  • 2.
    Pengantar Pointer danLinked List Pointer adalah konsep penting dalam pemrograman, khususnya di C dan C++, yang menyimpan alamat memori suatu data dan memungkinkan pengelolaan memori secara efisien. Konsep ini menjadi dasar pembentukan struktur data dinamis seperti linked list, yang tersusun dari node-node saling terhubung melalui pointer. Berbeda dengan array yang tersimpan berurutan di memori, linked list dapat berubah ukurannya sesuai kebutuhan, sehingga lebih fleksibel untuk penyimpanan dan manipulasi data.
  • 3.
    Konsep Pointer 1. Definisi Pointer 2.Deklarasi Pointer 3. Penggunaan Pointer 4. Manfaat Pointer 5. Pointer dalam Struktur Data
  • 4.
    Definisi Pointer Pointer adalahvariabel yang menyimpan alamat memori dari variabel lain. Dengan menggunakan pointer, kita dapat mengakses dan memanipulasi data yang ada di memori tanpa perlu menduplikasi data tersebut. Pointer adalah variabel khusus dalam bahasa pemrograman seperti C dan C++ yang digunakan untuk menyimpan alamat memori dari variabel lain. ü Variabel biasa menyimpan nilai data (contoh: int x = 10; → x menyimpan 10). ü Pointer menyimpan alamat memori tempat data tersebut disimpan (contoh: int *p = &x; → p menyimpan alamat memori x).
  • 5.
    Deklarasi Pointer Pointer harusdideklarasikan sebelum digunakan. Untuk mendeklarasikan pointer, kita menggunakan tanda * (asterisk) sebelum nama pointer. Contoh: int *ptr; // Pointer untuk menyimpan alamat variabel tipe integer Keterangan penting: ü tipe_data memastikan bahwa pointer hanya digunakan untuk menunjuk ke alamat variabel bertipe tersebut. ü Pointer yang belum diinisialisasi tidak boleh digunakan karena nilainya acak dan dapat menyebabkan runtime error.
  • 6.
    Penggunaan Pointer ü MengambilAlamat Variabel: Untuk mendapatkan alamat variabel, kita menggunakan operator &. int a = 5; int *ptr = &a; // Pointer ptr menyimpan alamat dari variabel a ü Mengakses Nilai Melalui Pointer: Untuk mengakses dan memanipulasi nilai yang ditunjuk oleh pointer, kita menggunakan operator * (dereferencing operator). printf("%d", *ptr); // Menampilkan nilai a melalui pointer *ptr = 10; // Mengubah nilai a menjadi 10
  • 7.
    Manfaat Pointer ü PengelolaanMemori yang Dinamis: Dengan pointer, program dapat mengalokasikan dan membebaskan memori saat runtime menggunakan fungsi seperti malloc(), calloc(), dan free(). Ini penting untuk data yang ukurannya tidak diketahui saat kompilasi. ü Membentuk Struktur Data Kompleks: Struktur data seperti linked list, stack, queue, tree, dan graph dibangun dengan menggunakan pointer untuk menghubungkan satu elemen dengan elemen lainnya. ü Efisiensi Pemrosesan Data: Pointer memungkinkan pengoperan alamat memori ke fungsi daripada menyalin seluruh data, sehingga menghemat waktu dan ruang memori (pass by reference).
  • 8.
    Manfaat Pointer ü ManipulasiData Secara Tidak Langsung: Pointer memungkinkan perubahan nilai variabel dari luar lingkup fungsi atau blok program. ü Interaksi dengan Perangkat Keras dan Sistem Operasi: Pointer digunakan untuk mengakses alamat memori tertentu, yang menjadi dasar dalam pemrograman sistem, pengelolaan buffer, dan komunikasi perangkat keras.
  • 9.
    Pointer Dalam StrukturData Dalam Struktur Data, pointer menjadi elemen kunci untuk: ü Linked List: setiap node menyimpan pointer ke node berikutnya. ü Tree: setiap node menyimpan pointer ke anak kiri dan anak kanan. ü Graph: pointer digunakan untuk menghubungkan simpul-simpul dalam bentuk adjacency list. ü Dynamic Array: pointer digunakan untuk merujuk pada blok memori yang dapat diperbesar atau diperkecil.
  • 10.
    Konsep Linked List 1. DefinisiLinked List 2. Jenis-jenis Linked List 3. Keuntungan Linked List dibandingkan Array
  • 11.
    Definisi Linked List Linkedlist adalah salah satu struktur data dinamis yang terdiri dari sekumpulan elemen yang disebut node, di mana setiap node menyimpan data dan pointer (atau link) yang menunjuk ke node berikutnya (atau node lain tergantung jenisnya). Berbeda dengan array yang menyimpan elemen secara bersebelahan di memori, linked list menyimpan elemen di lokasi memori yang tidak harus berurutan, tetapi terhubung melalui pointer. Struktur Node pada Linked List: Setiap node dalam linked list biasanya terdiri dari dua bagian: ü Data: Menyimpan nilai atau informasi. ü Pointer: Menunjuk ke node berikutnya.
  • 12.
    Jenis Linked List Terdapattiga jenis Linked List: ü Singly Linked List: Setiap node hanya memiliki pointer ke node berikutnya. ü Doubly Linked List: Setiap node memiliki dua pointer: satu ke node berikutnya dan satu ke node sebelumnya. Ini memungkinkan traversal maju dan mundur. ü Circular Linked List: Node terakhir menunjuk kembali ke node pertama, membuat daftar bersifat melingkar.
  • 13.
    Linked List &Array Keuntungan Linked List dibandingkan Array: ü Ukuran Dinamis: Dapat bertambah atau berkurang sesuai kebutuhan tanpa harus menentukan ukuran sejak awal. ü Penyisipan dan Penghapusan Cepat: Operasi sisip/hapus di awal atau tengah list cukup dengan memodifikasi pointer tanpa memindahkan elemen lain. ü Efisiensi Pemakaian Memori: Memori dialokasikan hanya saat diperlukan, tidak perlu memesan blok besar sekaligus seperti pada array.
  • 14.
    Linked List &Array ü Mengurangi Fragmentasi Memori: Tidak memerlukan blok memori bersebelahan; setiap node dapat ditempatkan di lokasi memori yang berbeda. ü Fleksibilitas Struktur Data: Memudahkan pembentukan struktur data kompleks seperti stack, queue, deque, graph, dan tree. ü Kemudahan Reorganisasi Data: Perubahan urutan elemen dapat dilakukan hanya dengan memodifikasi pointer tanpa menyalin seluruh isi list.
  • 15.
    Operasi Dasar Linked List 1.Inisialisasi Linked List 2. Menambahkan Elemen (Insertion) 3. Menghapus Elemen (Deletion) 4. Traversing Linked List
  • 16.
    Kelebihan Linked List üFleksibilitas Ukuran: Linked list dapat dengan mudah diperluas tanpa batasan ukuran, beradaptasi dengan jumlah elemen yang diperlukan. ü Inserting dan Deleting yang Efisien: Menambahkan dan menghapus elemen dapat dilakukan dengan cepat tanpa perlu menggeser elemen lain.
  • 17.
    Kekurangan Linked List üAkses yang Lebih Lambat: Waktu akses untuk menemukan elemen tertentu lebih lambat dibandingkan dengan array (O(n)). ü Penggunaan Memori Tambahan: Karena setiap node memerlukan penyimpanan untuk pointer, penggunaan memori bisa jadi lebih besar dibandingkan array. ü Kompleksitas Implementasi: Linked list lebih kompleks untuk diimplementasikan dan dipahami jika dibandingkan dengan array.
  • 18.
    Jurusan Informatika Fakultas TeknikIndustri Universitas Pembangunan Nasional “Veteran” Yogyakarta Andi Nurkholis, S.Kom., M.Kom. 8 September 2025 Sekian Terima Kasih