Kebersamaan itu indah...

Kebersamaan itu indah...
Bajul mati, 23 April 2013

ALGORITMA POLINOMIAL LINKED LIST



Algoritma tersebut merupakan algoritma untuk menjumlahkan bilangan-bilangan polinom. Algoritma ini menggunakan singgle link list. Dalam fungsi tersebut kita akan menampilkan penjumlahan polinom yang diinputkan oleh user. Node digunakan untuk menyimpan elemen yang tidak nol yaitu koefisien dan pangkatnya.  Untuk membuat algoritmanya kita membutuhkan file header berupa include stdio.h dan malloc.h (untuk mengaktifkan fungsi malloc). Kemudian untuk mendeklarasikan atau membuat algoritma berupa link list kita harus membuat struct, pada algoritma ini kita buat struct node. Selanjutnya kita  deklarasikan variabel pointer global yang akan digunakan dalam link list yaitu berupa float coef, int expo dan deklarasi kepala link list yaitu struct node *link. Untuk dapat membuat sebuah algoritma yang bisa menjumlah kan nilai polinom maka kita harus membuat beberapa fungsi hal ini untuk mempermudah kita dalam mengerjakan dan memahami program. Fungsi yang dapat dimasukan agar dapat menghitung nilai polinom dapat berupa fungsi insert yaitu fungsi yang digunakan untuk memasukan data baru. Data baru yang dimasukan kedalam linked list oleh fungsi insert merupakan data yang dimasukan oleh user melalui fungsi enter. fungsi poly_add digunakan untuk menempatkan data baru ke data baru ke dalam link list dengan posisi yang tepat. Fungsi enter adalah fungsi yang digunakan oleh user untuk memasukan data berupa koefisien dan pangkat pada polinom yang selanjutnya dimasukan ke dalam linked lis oleh fungsi insert. Fungsi display digunakan untuk menampilkan data yang terdapat di dalam link list.
Untuk fungsi yang pertama yaitu fungsi insert. Fungsi ini akan dipanggil dari fungsi main untuk meminta data baru yang akan dimasukkan ke dalam link list. Data baru yang dimasukan dalam fungsi ini merupakan data yang telah diinput secara langsung oleh user melalui fungsi enter. Fungsi insert ini akan digunakan berulang-ulang untuk meminta masukan data baru. Setiap kali fungsi fungsi dipanggil kita harus memesan tempat pada memory komputer untuk menampung data baru. Dalam ha ini alamat memory yang dipesan disimpan dalam variabel pointer node. Program akan meminta kita untuk memasukan data baru yang akan dimasukan ke memory melalui variabel pointer node. Apabila data yang kita masukan berupa null atau memenuhi syarat ex>start->expo maka program akan berakhir atau langsung menuju ke return atau berakhir. Tetapi apabila data yang dimasukan tidak berupa null atau tidak memenuhi syarat yang kedua maka program akan diteruskan ke kondisi yang kedua yaitu terjadinya perulangan-perulangan masukan data sampai data yang dimasukkan memenuhi syarat ptr->link->expo>ex.
Fungsi yang kedua adalah fungsi poly_add. Fungsi ini merupakan fungsi untuk memasukan data yang telah didapatkan dari fungsi insert ke dalam link list. Kita tidak boleh sembarangan dalam memasukan data ke dalam link list, kita perlu melakukan pengecekan untuk menemukan posisi yang tepat dimana data akan diletakkan di dalam link list. Sehingga data yang kita peroleh merupakan data dalam posisi terurut. Untuk memasukan data ke dalam linked list tidak semua data diberlakukan sama. Karena kita ingin memasukan data sambil mengurutkan maka kita perlu memeriksa posisi mana node akan dimasukan ke dalam linked list.
Pertama-tama kita harus memeriksa apakah pada linked list sudah terdapat data dengan fungsi if (p1==NULL && p2==NULL). Bila belum ada ada data pada link list maka data baru dianggap sebagai data pertama sekaligus data terakhir. Oleh karena itu pointer ini akan langsung menuju ke return atau berakhir. Lain halnya apabila sudah terdapat data pada link list, kita masih perlu melakukan pemeriksaan apakah data baru akan disisipkan sebagai data pertama atau sebagai data terakhir. Namun sebelumnya kita perlu melakukan pengecekan terhadap data yang baru diinputkan. Apabila di dalam linked list sudah terdapat data yang sama if(p1->expo == p2->expo) maka kita hanya perlu menambahkan koefisien data baru dengan koefisien data yang sudah terdapat pada linked list. Tetapi apabila data yang dimasukan berupa syarat if(p1->expo > p2->expo) dan if(p2->expo > p1->expo) maka yang kita proses adalah data lebih besar misalkan data P1 lebih besar dari dua maka data yang diproses adalah data p1 dan sebaliknya.

Fungsi enter merupakan fungsi yang digunakan dalam inputan data yang diperlukan dalam penghitungan polinomial inputan data tersebut berupa berapa banyak deret polinom yang diinginkan, berapa koefisien bilangan polinom dan berapa pangkat sebuah bilangan  polinom yang diinginkan. Nilai-nilai yang dimasukan ke dalam fungsi enter ini selanjutnya akan diproses oleh fungsi insert untuk dimasukan ke dalam linked list.
Fungsi display adalah fungsi yang digunakan untuk menampilkan data yang terdapat di dalam linked list. Fungsi display disini sangat sederhana fungsi display disini hanya menampilkan data dalam linklist yang memenuhi syarat while(ptr!=NULL) artinya data yang memenuhi syarat tidak null akan terus ditampilkan. Sedangkan data yang dengan syarat if (ptr==NULL) akan langsung berakhir atau return.

-          Proses penjumlahan polinom di dalam linked list
Pada linked list elemen polinom diurutkan berdasarkan dari pangkat terendah sampai pangkat tertinggi. Pada penambahan elemen baru secara umum membentuk suatu simpul baru, tetapi tidak selalu demikiaan. Fungsi poly_add memeriksa apakah terdapat simpul dengan pangkat seperti pangkat elemen baru yang akan ditambahkan. Apabila terdapat simpul dengan pangkat yang sama maka nilai koefisiennya akan dijumlahkan tanpa membentuk simpul yang baru. Jika hasil penambahan ini menyebabkan keofisien bernilai  nol maka simpul ini harus dihapus dari linked list. Apabila pada linked list polinom belum terdapat simpul dengan pangkat yang sama dengan pangkat elemen baru maka dibentuk simpul baru.
Penjumlahan dua polinom akan membentuk polinom hasil. Penjumlahan dilakukan dengan membandingkan nilai pangkat. Jika nilai pangkat pada simpul-simpul kedua polinom sama besar dan hasil jumlah koefisiennya sama dengan nol maka abaikan kedua simpul ini. Apbila hasil jumlah koefisiennya bukan sama dengan nol maka tambahkan data ini ke polinom hasil. Proses dilanjutkan dengan simpul berikutnya pada masing-masing polinom.
 Jika nilai pangkat pada simpul polinom pertama lebih kecil dari nilai pangkat pada simpul polinom kedua maka simpul polinom pertama ini yang disalin ke polinom hasil dan pointer dipindah ke simpul berikutnnya pada polinom pertama.
Jika nilai pangkat pada simpul polinom pertama lebih besar daripada nilai pangkat pada simpul polinom ke dua maka simpul polinom kedua ini yang disalin ke polinom hasil dan pointer pindah ke simpul berikutnya pada polinom kedua. 
berikut algoritma lengkap dapat didownload disini.

1 komentar:

rofik mengatakan...

kok file algoritmanya tidak bisa dibuka ya kak

Posting Komentar