SENARAI & SENARAI
BERPAUT
Pengenalan kepada Senarai
Definisi Senarai
Menggunakan Senarai
Pengenalan kepada Senarai Berpaut
Definisi Senarai Berpaut
Menggunakan Senarai Berpaut
UNIT
3.1 Pengenalan kepada senarai
• Struktur data yang tidak boleh menukarkan saiznya semasa program dilaksanakan
dinamakan struktur data statik.
• Struktur data jenis ini perlu ditetapkan saiznya terlebih dahulu.
• Kelebihannya adalah ia menyediakan cara mencapai ahli-ahli dalam struktur ini dengan
mudah.
3.2 Definisi senarai
• Senarai adalah satu kumpulan koleksi data, elemen, komponen atau objek yang sama
jenis
• Senarai selalunya berbentuk seperti satu rekod.
• Operasi-operasi yang boleh dilakukan ke atas senarai adalah :
- Menambah (insertion) menambah item baru ke dalam senarai
- Menghapus (deletion) menghapuskan satu item daripada senarai. Operasi ini
melibatkan proses mengenalpasti lokasi item seterusnya menghapuskan item tersebut. Selepas itu, item yang berada di bawah perlu dianjakkan ke atas.
- Mencari (retrieval) mengenalpasti item dari senarai dan memaparkannya - Menyenarai (traversal) Semua item akan disenaraikan secara tersusun.
Operasi ini memerlukan satu algoritma ulangan.
3.3 Mengimplementasikan operasi senarai secara tatsusunan
• Senarai boleh diimplementasi secara tatasusunan yang mempunyai item yang
berjujukan
• Jujukan tersebut adalah berdasarkan kepada susunan dimana, item yang pertama
dimasukkan akan berada pada kedudukan pertama dalam tatasusunan, begitulah turutan kedudukan item seterusnya.
3.4 Menggunakan operasi senarai
• Operasi yang terlibat dalam mengimplementasi senarai secara tatasusunan adalah
mencipta, menyemak, menambah dan menghapus item-item dalam senarai.
• Mencipta senarai
- Akan melibatkan proses menentukan bilangan maksimum bagi item yang hendak
digunakan dalam senarai
- Proses yang seterusnya ialah mengenalpasti jenis-jenis item yang diperlukan - Input : Bilangan item dan jenis item
- Proses : Mencipta satu senarai kosong - Output : Senarai tercipta
P0 P1 P2 P3 . . . . Pn
X[0] X[1] X[2] X[3] . . . . X[n] senarai
- Terbahagi kepada dua cara iaitu:
a) Proses menentukan senarai kosong atau tidak
- Input : Menerima satu senarai
- Proses : Mengenalpasti sama ada item pertama wujud atau tidak - Output : Jika terdapat item pertama, senarai tidak kosong
b) Proses menentukan senarai penuh atau tidak
- Input : Menerima satu senarai
- Proses : Mengenalpasti sama ada item terkahir wujud atau tidak - Jika terdapat item terakhir, senarai penuh
• Menambah item-item dalam senarai
- Melibatkan penerimaan item baru
- Item terakhir dalam senarai dikenalpasti kedudukannya untuk proses menambah
item dalam senarai
- Input : Menerima satu senarai
- Proses : Pastikan senarai tidak penuh. Terima item baru. Tentukan kedudukan item
terakhir. Masukkan item baru.
- Output : Senarai yang telah dikemaskinikan (item baru ditambah)
• Menghapuskan ahli dalam senarai
- Proses menghapuskan item yang terdapat di dalam satu senarai
- Senarai yang diterima perlu disemak untuk menentukan senarai tidak kosong. - Item yang hendak dihapuskan perlu dikenalpasti
- Input : Menerima satu senarai
- Proses : Pastikan senarai tidak kosong. Kenalpasti item. Item disemak dalam senarai
untuk menentukan kedudukan. Proses hapus dan anjak item dilaksanakan
3.5 Pengenalan kepada senarai berpaut
• Senarai berpaut adalah sejenis struktur data di mana setiap itemnya mempunyai
hubungkait antara item yang lain dalam satu senarai
• Segala operasi yang hendak dilaksanakan ke atas sesuatu item perlulah mengambilkira
item yang berada bersebelahannya
3.6 Definisi senarai berpaut
• Senarai berpaut adalah satu kumpulan item yang dinamik di mana saiznya akan
bertambah dan berkurang bergantung kepada jumlah itemnya.
• Item di dalam senarai berpaut mempunyai dua medan iaitu medan data dan medan
pautan.
• Operasi-operasi yang boleh dilakukan ke atas senarai berpaut adalah :- • Mencipta senarai berpaut
- Menghasilkan satu senarai berpaut baru
• Mencipta nod dalam senarai berpaut
- Menghasilkan satu punca baru untuk menghubungkan antara item-item dalam
senarai berpaut
• Menyemak senarai berpaut : penuh / kosong
- Mengenalpasti sama ada senarai berpaut kosng atau penuh
• Menghapuskan nod dalam senarai berpaut
- Mengenalpasti nod (hubungan item)
- Menghapuskan satu item daripada senarai berpaut
- Operasi melibatkan proses mengenalpasti lokasi item seterusnya memutuskan
pautan
- Selepas itu, item yang berada sebelumnya perlu dipautkan kepada item berikutnya.
• Menambah nod dalam senarai berpaut
- Mengenalpasti nod (hubungan item)
- Menambah satu item ke dalam senarai berpaut
- Operasi melibatkan proses mengenalpasti lokasi item, seterusnya menyelitkan item
baru ke dalam senarai berpaut
3.7 Mengimplementasikan operasi senarai berpaut linear
• Senarai berpaut linear ialah dimana data disusun secara bersiri
• Item-item disusun dalam bentuk mengikut susunan dimana item kedua berada
dibelakang item pertama, item ketiga berada dibelakang item kedua dan seterusnya.
3.8 Menggunakan operasi senarai berpaut linear
• Senarai berpaut adalah satu jenis senarai yang dinamik, bermakna untuk
mengimplementasikannya, penuding adalah perlu.
• Operasi yang terlibat dalam mengimplementasi senarai berpaut adalah :- • Mencipta senarai
- Proses mencipta senarai berpaut memerlukan pengisytiharan struct - Jenis-jenis item yang perlu dimasukkan perlu dikenalpasti terlebih dahulu
- Output : Senarai tercipta
• Mencipta nod dalam senarai berpaut
- Perlu diimplementasikan dengan menggunakan penuding yang dapat menyediakan
ruang ingatan untuk nod secara dinamik
- Untuk tujuan mencipta nod secara dinamik, fungsi malloc( ) perlu digunakan
- Ini perlu kerana apabaila hendak menambah satu otem baru, item baru tersebut
perlu dipautkan kepada item sebelumnya (item lama) dalam senrai dimana proses ini dilakukan melalui nod
- Input : Menerima satu senarai - Proses : Mencipta satu nod baru
- Output : Satu senarai yang boleh menerima item baru
• Menyemak senarai berpaut
- Untuk mengenalpasti sama ada senarai kosong atau tidak
- Melibatkan pengujian pembolehubah dalam senarai berpaut sama ada ianya kosong
(null) atau tidak
- Input : Menerima satu senarai berpaut
- Proses : Mengenalpasti sama ada pembolehubah null wujud atau tidak - Output : Jika null, senrai berpaut adalah kosong
• Menambah nod dalam senarai berpaut
- Menambah nod ke dalam senarai berpaut boleh terdiri daripada menambah di
bahagian hujung senarai atau di bahagain tengah senarai.
- Input : Menerima satu senrai berpaut
- Proses : Menyemak pembolehubah. Kenalpasti lokasi. Terima item baru. Masukkan
item baru
- Output : Senarai yang telah dikemaskinikan (item baru ditambah) - Menambah nod di hujung senarai
o Untuk menambah nod pada hujung senarai, perlu semak sama ada pembolehubah Null atau tidak
o Jika pembolehubah Null, ini bermaksud senarai kosong dan item akan ditambah pada lokasi pertama.
o Jika pembolehubah tidak Null atau mempunyai nilai, ini bermaksud senrai mengandungi item, maka penambahan dilakukan di lokasi terakhir dalam senarai.
- Menambah nod di tengah senarai
o Lokasi yang hendak ditambah perlu dikenalpasti
o Nod pada lokasi tersebut diputuskan untuk membuat penyambungan nod item baru
• Menghapuskan item dalam senarai berpaut
- Menghapuskan item bermaksud item yang tidak diperlukan akan dibuang atau
dikeluarkan daripada senarai
- Proses menghapuskan item terbahagi kepada 3 iaitu menghapus item tunggal,
menghapus item di tengah senarai dan menghapus item di hujung senarai.
- Senarai yang diterima perlu disemak untuk menentukan ianya bukan satu senarai
kosong
- Item yang hendak dihapuskan perlu dikenalpasti - Item perlu dihapuskan dan dikemaskini
- Proses : Pastikan senarai tidak kosong. Kenalpasti item. Item disemak dalam senarai
untuk menentukan kedudukannya. Proses hapus dan anjakitem dilaksanakan.
- Output : Senarai yang telah dikemaskini (item telah dihapuskan) - Menghapus item tunggal
○ Item dalam senarai diuji untuk mengenalpasti pembolehubah x wujud, ini
bermakna item berada di penghujung senarai
○ Pautan pada item diputuskan dan disambung pada pembolehubah Null
Sebelum proses hapus Selepas proses hapus
- Menghapus item dihujung senarai
○ Item dalam senarai diuji untuk mengenalpasti pembolehubah x wujud, ini
bermakna item berada di penghujung senarai.
○ Pepaut pada item di[utuskan dan disambung pada pembolehubah x
Sebelum proses hapus
Selepas proses hapus
- Menghapus item di tengah senarai
○ Item sebelum dan selepas dikenalpasti
○ Pautan pada item sebelum dan selepas diputuskan dan disambung
Sebelum proses hapus
Selepas proses hapus
DATA X
DATA X
NULL
DATA1 DATA2 DATA3 DATA4 X
DATA1 DATA2 DATA3 X
DATA4 X
DATA1 DATA2 DATA3 DATA4 X
DATA2
• Keberkesanan penggunaan senarai berpaut
Kebaikan Kelemahan
Saiz senarai yang dinamik Proses pengaturcaraan lebih kompleks Proses tambah dan hapus item tidak
perlukan pergerakan item yang banyak
Penggunaan ingatan dan masa pengkomputeran yang tinggi Masa digunakan untk proses tambah dan
hapus lebih singkat
Tidak sesuai untuk senarai yang ringkas Sesuai digunakan untuk senarai yang besar
(saiz tidak diketahui)