Apa itu Struktur Data dalam C & Bagaimana Cara Menggunakannya?

Diterbitkan: 2021-02-26

Daftar isi

pengantar

Untuk memulainya, struktur data adalah kumpulan item data yang disimpan bersama di bawah satu nama atau judul dan merupakan cara khusus untuk menyimpan dan merakit data sehingga data dapat digunakan secara efisien.

Jenis

Struktur Data lazim dan digunakan di hampir setiap sistem perangkat lunak. Beberapa contoh paling umum dari Struktur Data adalah array, antrian, tumpukan, daftar tertaut, dan pohon.

Aplikasi

Dalam mendesain compiler, sistem operasi, pembuatan database, aplikasi Artificial Intelligence, dan masih banyak lagi.

Klasifikasi

Struktur Data diklasifikasikan menjadi dua kategori: struktur data primitif dan struktur data non-primitif.

1. Primitif: Mereka adalah tipe data dasar yang didukung oleh bahasa pemrograman. Contoh umum dari klasifikasi ini adalah bilangan bulat, karakter, dan boolean.

2. Non-Primitive: Kategori struktur data ini dibuat menggunakan struktur data primitif. Contohnya termasuk tumpukan tertaut, daftar tertaut, grafik, dan pohon.

Array

Array adalah kumpulan sederhana dari elemen data yang memiliki tipe data yang sama. Itu berarti array tipe integer hanya dapat menyimpan nilai integer. Array tipe data float dapat menyimpan nilai yang sesuai dengan tipe data float dan tidak ada yang lain.

Elemen yang disimpan dalam array dapat diakses secara linier dan ada dalam blok memori yang berdekatan yang dapat dirujuk menggunakan indeks.

Mendeklarasikan Array

Dalam C, sebuah array dapat dideklarasikan sebagai:

nama_tipe data[panjang];

Sebagai contoh,

perintah int[10];

Baris kode di atas membuat larik 10 blok memori di mana nilai integer dapat disimpan. Dalam C, nilai indeks array dimulai dari 0. Jadi nilai indeks akan berkisar dari 0 hingga 9. Jika kita ingin mengakses nilai tertentu dalam array itu, kita cukup mengetikkan:

printf(pesanan[angka_indeks]);

Cara lain untuk mendeklarasikan array adalah sebagai berikut:

data_type array_name[size]={daftar nilai};

Sebagai contoh,

int tanda[5]={9, 8, 7, 9, 8};

Baris perintah di atas membuat larik yang memiliki 5 blok memori dengan nilai tetap di setiap blok. Pada compiler 32 bit, memori 32 bit yang ditempati oleh tipe data int adalah 4 byte. Jadi, 5 blok memori akan memakan 20 byte memori.

Cara lain yang sah untuk menginisialisasi array adalah:

int tanda [5] = {9 , 45};

Perintah ini akan membuat larik 5 blok, dengan 3 blok terakhir memiliki 0 sebagai nilainya.

Cara lain yang sah adalah:

int tanda [] = {9 , 5, 2, 1, 3,4};

Kompiler C memahami bahwa hanya 5 blok yang diperlukan untuk memasukkan data ini ke dalam array. Oleh karena itu akan menginisialisasi sebuah array dari tanda nama ukuran 5.

Demikian pula, array 2-D dapat diinisialisasi dengan cara berikut:

int tanda[2][3]={{9,7,7},{6, 2, 1}};

Perintah di atas akan membuat array 2-D yang memiliki 2 baris dan 3 kolom.

Baca: Ide & Topik Proyek Struktur Data

Operasi

Ada beberapa operasi yang dapat dilakukan pada array. Sebagai contoh:

  1. melintasi array
  2. Memasukkan elemen dalam array
  3. Mencari elemen tertentu dalam array
  4. Menghapus elemen tertentu dari array
  5. Menggabungkan dua array dan,
  6. Mengurutkan larik — dalam urutan menaik atau menurun.

Kekurangan

Memori yang dialokasikan ke array sudah diperbaiki. Ini sebenarnya adalah masalah. Katakanlah, kami membuat larik berukuran 50 dan hanya mengakses 30 blok memori. 20 blok yang tersisa mengambil memori tanpa digunakan. Oleh karena itu, untuk mengatasi masalah ini, kami memiliki daftar tertaut.

Daftar Tertaut

Linked List, sangat mirip dengan array yang menyimpan data secara serial. Perbedaan utamanya adalah ia tidak menyimpan semuanya sekaligus. Alih-alih menyimpan data atau membuat blok memori tersedia saat dan saat diperlukan. Dalam daftar tertaut, blok dibagi menjadi dua bagian. Bagian pertama berisi data aktual.

Bagian kedua adalah penunjuk yang menunjuk ke blok berikutnya dalam daftar tertaut. Pointer menyimpan alamat blok berikutnya yang menyimpan data. Ada satu lagi penunjuk yang dikenal sebagai penunjuk kepala. head menunjuk ke blok memori pertama dalam daftar tertaut. Berikut adalah representasi dari linked list. Blok ini juga disebut sebagai 'node'.

sumber

Menginisialisasi Daftar Tertaut

Untuk menginisialisasi daftar tautan, kami membuat simpul nama struktur. Struktur memiliki dua hal. 1. Data yang dipegangnya dan 2. Pointer yang menunjuk ke node berikutnya. Tipe data pointer akan menjadi struktur seperti yang menunjuk ke node struktur.

simpul struktur

{

int data;

struct simpul *berikutnya;

};

Dalam daftar tertaut, penunjuk simpul terakhir tidak akan menunjuk ke apa pun, atau hanya, akan menunjuk ke nol.

Baca Juga: Grafik Dalam Struktur Data

Lintasan Daftar Tertaut

Dalam daftar tertaut, penunjuk simpul terakhir tidak akan menunjuk ke apa pun, atau hanya, itu akan menunjuk ke nol. Jadi untuk melintasi seluruh daftar tertaut, kami membuat pointer dummy yang awalnya menunjuk ke kepala. Dan, untuk panjang daftar tertaut, penunjuk terus bergerak maju hingga menunjuk ke nol atau mencapai simpul terakhir dari daftar tertaut.

Menambahkan Node

Algoritma untuk menambahkan node sebelum node tertentu adalah sebagai berikut:

  1. atur dua pointer dummy (ptr dan preptr) yang mengarah ke kepala pada awalnya
  2. pindahkan ptr hingga ptr.data sama dengan data sebelum kita bermaksud menyisipkan node. preptr akan menjadi 1 simpul di belakang ptr.
  3. Buat simpul
  4. Node yang ditunjuk oleh preptr dummy, node berikutnya akan menunjuk ke node baru ini
  5. Node baru berikutnya akan menunjuk ke ptr.

Algoritma untuk menambahkan node setelah data tertentu akan dilakukan dengan cara yang sama.

Keuntungan dari Daftar Tertaut

  1. Ukuran dinamis tidak seperti array
  2. Melakukan penyisipan dan penghapusan lebih mudah di daftar tertaut daripada di larik.

Antre

Antrian mengikuti tipe sistem First In First Out atau FIFO. Dalam implementasi array, kita akan memiliki dua pointer untuk mendemonstrasikan use case dari Queue.

Sumber

FIFO pada dasarnya berarti bahwa nilai yang masuk ke stack terlebih dahulu, meninggalkan array terlebih dahulu. Dalam diagram antrian di atas, penunjuk depan menunjuk ke nilai 7. Jika kita menghapus blok pertama (dequeue), bagian depan sekarang akan menunjuk ke nilai 2. Demikian pula, jika kita memasukkan angka (enqueue), katakanlah, 3 di posisi 5. Kemudian, penunjuk belakang akan menunjuk pada posisi 5.

Kondisi Overflow dan Underflow

Namun demikian, sebelum memasukkan nilai data dalam antrian, kita harus memeriksa kondisi overflow. Overflow akan terjadi ketika ada upaya untuk memasukkan elemen ke dalam antrian yang sudah penuh. Antrian akan penuh ketika belakang = max_size-1.

Demikian juga, sebelum menghapus data dari antrian, kita harus memeriksa kondisi underflow. Underflow akan terjadi ketika ada upaya untuk menghapus elemen dari antrian yang sudah kosong, yaitu jika depan = nol dan belakang = nol, maka antrian kosong.

Tumpukan

Tumpukan adalah struktur data di mana kita menyisipkan dan menghapus elemen hanya di satu ujung, juga dikenal sebagai bagian atas tumpukan. Oleh karena itu, implementasi stack disebut sebagai implementasi last-in, first-out (LIFO). Tidak seperti antrian, untuk tumpukan, kami hanya membutuhkan satu penunjuk atas.

Jika kita ingin memasukkan (push) elemen dalam sebuah array, pointer atas bergerak ke atas atau bertambah 1. Jika kita ingin menghapus (pop) sebuah elemen, pointer atas berkurang 1 atau turun 1 unit. Tumpukan mendukung tiga operasi dasar: push, pop, dan peep. Operasi mengintip hanya menampilkan elemen paling atas dalam tumpukan.

Sumber

Pelajari Kursus Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Kesimpulan

Pada artikel ini, kita telah berbicara tentang 4 jenis struktur data yaitu, array, linked list, antrian, dan tumpukan. Semoga Anda menyukai artikel ini dan nantikan bacaan menarik lainnya. Sampai Lain waktu.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang Javascript, pengembangan tumpukan penuh, lihat Program PG Eksekutif upGrad & IIIT-B dalam Pengembangan Perangkat Lunak Tumpukan Penuh yang dirancang untuk para profesional yang bekerja dan menawarkan 500+ jam pelatihan ketat, 9+ proyek , dan penugasan, status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.

Apa itu struktur data dalam pemrograman?

Struktur data adalah cara kita mengatur data dalam sebuah program. Dua struktur data yang paling penting adalah array dan linked list. Array adalah struktur data yang paling familiar, dan paling mudah untuk dipahami. Array pada dasarnya adalah daftar bernomor dari item terkait. Mereka mudah dipahami dan digunakan, tetapi tidak terlalu efisien saat bekerja dengan data dalam jumlah besar. Daftar tertaut lebih kompleks, tetapi bisa sangat efisien jika digunakan dengan benar. Mereka adalah pilihan yang baik ketika Anda harus menambahkan atau menghapus item di tengah daftar besar, atau ketika Anda perlu mencari item dalam daftar besar.

Apa perbedaan antara daftar tertaut dan array?

Dalam array, indeks digunakan untuk mengakses elemen. Elemen dalam array diatur dalam urutan berurutan, yang memudahkan untuk mengakses dan memodifikasi elemen jika indeks digunakan. Array juga memiliki ukuran tetap. Elemen dialokasikan pada saat pembuatannya. Dalam daftar tertaut, pointer digunakan untuk mengakses elemen. Elemen daftar tertaut tidak harus disimpan secara berurutan. Daftar tertaut memiliki ukuran yang tidak diketahui karena dapat berisi node pada saat pembuatannya. Pointer digunakan untuk mengakses suatu elemen, sehingga alokasi memori lebih mudah.

Apa itu pointer di C?

Pointer adalah tipe data dalam C yang menyimpan alamat variabel atau fungsi apa pun. Biasanya digunakan sebagai referensi ke lokasi memori lain. Pointer dapat menyimpan alamat memori array, struktur, fungsi, atau tipe lainnya. C menggunakan pointer untuk meneruskan nilai ke dan menerima nilai dari fungsi. Pointer digunakan untuk mengalokasikan ruang memori secara dinamis.