Video: Cara Membuat Single Linked List Di Bahasa Pemrograman Java | MUL CODE 2024
Dalam pemrograman C, jika Anda ingin menambahkan kode kedua ke kode yang telah Anda buat, buatlah linked list - rangkaian struktur yang berisi petunjuk satu sama lain. Seiring dengan data dasar dalam suatu struktur, struktur berisi pointer, yang berisi alamat dari struktur berikutnya dalam daftar.
Dengan beberapa juggling juggling dari nama penunjuk, ditambah NULL untuk menutupi akhir daftar, Anda mungkin akan mendapatkan sesuatu yang mirip dengan kode sumber dalam A Primitive Linked-List Example.
CONTOH HIDUP YANG DIMULAI SEBELUMNYA
#include #include #include int main () {struct stock {char symbol [5]; kuantitas int; harga mengapung; struct stock * next;}; struct stock * pertama; saham struct * saat ini; saham struct * baru; / * Buat struktur di memori * / first = (struct stock *) malloc (sizeof (struct stock)); if (first == NULL) {puts ("Beberapa jenis malloc () error"); exit (1);} / * Tetapkan data struktur * / current = first; strcpy (simbol saat ini, "GOOG"); arus-> kuantitas = 100; current-> price = 801. 19; current-> next = NULL; new = (struct stock *) malloc (sizeof (stok struct)); if (new == NULL) {puts ("malok lain () error"); exit (1);} current-> next = new; arus = baru; strcpy (current-> symbol, "MSFT"); arus-> kuantitas = 100; current-> price = 28. 77; current-> next = NULL; / * Tampilkan database * / puts ("Portofolio Investasi"); printf ("SymboltSharestPricetValuen"); arus = pertama; printf ("% - 6st% 5dt%. 2ft%. 2fn", simbol arus->, arus-> kuantitas, arus-> harga, arus-> kuantitas * harga arus->); arus = arus-> berikutnya; printf ("% - 6st% 5dt%. 2ft%. 2fn", simbol arus->, arus-> kuantitas, arus-> harga, arus-> kuantitas * harga arus->); return (0);}
Kode sumber ini cukup panjang, tapi hanya menciptakan struktur kedua, terkait dengan yang pertama. Jangan biarkan panjang kode sumber mengintimidasi Anda.
Baris 13 sampai 15 menyatakan tiga petunjuk struktur standar yang diperlukan untuk tarian linked-list. Secara tradisional, mereka diberi nama dulu, terkini, dan baru. Mereka bermain menjadi anggota keempat dalam struktur, selanjutnya, ditemukan di Baris 11, yang merupakan penunjuk struktur.
Jangan gunakan typedef untuk menentukan variabel struktur baru saat membuat linked list. Contoh Daftar Linked Primitif tidak menggunakan typedef, jadi ini bukan masalah dengan kode, namun banyak pemrogram C menggunakan typedef dengan struktur. Hati-hati!
Nama variabel yang baru, yang digunakan pada Baris 15, adalah kata yang dicadangkan di C ++, jadi jika Anda ingin menjadi dua bahasa, ubah nama variabel menjadi new_struct atau menjadi sesuatu selain kata baru.
Saat struktur pertama terisi, Baris 30 menugaskan pointer NULL ke elemen berikutnya.Nilai NULL tersebut menutupi akhir daftar yang terhubung.
Baris 32 membuat struktur, menempatkan alamatnya di variabel penunjuk baru. Alamat disimpan dalam struktur pertama di Baris 38. Begitulah lokasi struktur kedua dipertahankan.
Baris 40 sampai 43 mengisi informasi untuk penunjuk kedua, tetapkan nilai NULL ke elemen berikutnya pada Baris 43.
Keterkaitan terjadi saat isi struktur ditampilkan. Baris 48 menangkap alamat struktur pertama. Kemudian Line 54 menangkap alamat struktur berikutnya dari dalam struktur pertama.
Latihan 1 : Ketik kode sumber dari A Primitive Linked-List Example ke editor Anda. Meski sudah lama, ketik saja karena Anda perlu mengeditnya lagi nanti (jika Anda tidak terbiasa dengan itu sekarang). Bangun dan jalankan
Tidak seperti array, struktur dalam linked list tidak diberi nomor. Sebagai gantinya, masing-masing struktur dihubungkan ke struktur berikutnya dalam daftar. Selama Anda mengetahui alamat struktur pertama, Anda dapat mengerjakan daftar sampai akhir, yang ditandai dengan NULL.
Contoh Daftar Linked Primitif menunjukkan beberapa kode sumber ceroboh dengan banyak kode berulang. Bila Anda melihat banyak pernyataan seperti ini dalam kode Anda, Anda harus segera memikirkan "fungsi. "
CONTOH LEBIH BAIK LINKED-LIST
#include #include #include #define ITEMS 5 struct stock {char symbol [5]; kuantitas int; harga mengapung; struct stock * next;}; struct stock * pertama; saham struct * saat ini; saham struct * baru; struct stock * make_structure (void); void fill_structure (struct stock * a, int c); void show_structure (struct stock * a); int main () {int x; fill_structure (current, x + 1);} current-> next = NULL; / * Tampilkan database * / puts ("Portofolio Investasi"); printf ("SymboltSharestPricetValuen "); current = first; while (current) {show_structure (current); current = current-> next;} return (0);} struct stock * make_structure (void) {struct stock * a; a = (struct stock *) malloc (sizeof (struct stock)); if (a == NULL) {puts ("Beberapa jenis malloc () error"); exit (1);} return (a);} void fill_structure (struct stock * a, int c) {printf ("Item #% d /% d: n", c, ITEMS; printf ("Simbol Stok:"); scanf ("% s", simbol a->); printf ("Nomor dari saham: "); scanf ("% d ", & a-> quantity); printf (" harga saham: "); scanf ("% f ", & a-> price);} void show_structure (struct stock * a) {printf ("% - 6st% 5dt%. 2ft%. 2fn", a-> simbol, a-> quantity, a-> price, a-> quantity * a-> price;;}
daftar yang paling banyak ditautkan dibuat seperti ditunjukkan pada Contoh Linked List yang Lebih Baik. Kuncinya adalah menggunakan tiga variabel struktur, yang ditunjukkan pada Baris 13 sampai 15:
-
pertama selalu berisi alamat dari struktur pertama dalam daftar. Selalu.
-
saat ini berisi alamat struktur yang sedang dikerjakan, diisi dengan data, atau ditampilkan.
-
baru adalah alamat dari struktur baru yang dibuat dengan menggunakan fungsi malloc ().
Baris 7 menyatakan struktur stok sebagai global. Dengan begitu, bisa diakses dari berbagai fungsi.
Lingkaran antara Baris 25 dan 39 menciptakan struktur baru, menghubungkan keduanya.Struktur awal sangat istimewa, jadi alamatnya tersimpan di Baris 30. Jika tidak, struktur baru dialokasikan, berkat fungsi make_structure ().
Di Baris 35, struktur sebelumnya diperbarui; nilai arus tidak berubah sampai Garis 36. Sebelum itu terjadi, penunjuk pada struktur saat ini diperbarui dengan alamat struktur berikutnya, baru.
Pada Baris 40, akhir dari linked list ditandai dengan mengatur ulang pointer baru dalam struktur terakhir ke sebuah NULL.
Loop sementara di Baris 46 menampilkan semua struktur dalam linked list. Kondisi loop adalah nilai dari pointer saat ini. Saat NULL ditemui, loop berhenti.
Sisa kode yang ditunjukkan dalam A Better Linked-List Example terdiri dari fungsi yang cukup jelas.
Latihan 2 : Salin kode dari A Better Linked-List Example ke editor. Bangun dan jalankan
Catatlah pernyataan scanf () di fungsi fill_structure (). Ingat bahwa -> adalah notasi "peeker" untuk sebuah pointer. Untuk mendapatkan alamat, Anda harus awalan variabel dengan fungsi & di scanf ().