ধরুন, আমাদের দুটি বহুপদ দেওয়া হয়েছে এবং আমাদের দুটি বহুপদীর যোগ বের করতে হবে। বহুপদকে সংযুক্ত তালিকা হিসাবে উপস্থাপন করতে হবে; বহুপদগুলির শর্তাবলী একটি লিঙ্কযুক্ত তালিকা নোড হিসাবে উপস্থাপন করা হবে। প্রতিটি লিঙ্ক করা তালিকা নোডে সহগ মান, পাওয়ার মান এবং পরবর্তী লিঙ্কযুক্ত তালিকা নোডের পয়েন্টার থাকবে। আমাদের একটি তৃতীয় লিঙ্কযুক্ত তালিকা ফেরত দিতে হবে যা দুটি লিঙ্কযুক্ত তালিকা বহুপদীর যোগ।
সুতরাং, যদি ইনপুট মত হয়
1x^1 + 1x^2 =0 এবং 2x^1 + 3x^0 =0,
তাহলে আউটপুট হবে 3x^1 + 1x^2 + 3x^0 =0
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
ডামি :=একটি নতুন বহুপদী নোড
-
নোড :=একটি নতুন বহুপদী নোড
-
পলি 1 এবং পলি 2 খালি না থাকলেও করুন
-
পলি 1 এর পাওয়ার> পলি 2 এর পাওয়ার, তাহলে
-
নোডের পরের:=poly1
-
নোড :=poly1
-
poly1 :=poly1 এর পরবর্তী
-
-
অন্যথায় যখন poly1 এর শক্তি
-
নোডের পরের:=poly2
-
নোড :=poly2
-
poly2 :=poly2 এর পরের
-
-
অন্যথায়,
-
coef :=poly1 এর সহগ + poly2 এর সহগ
-
যদি coef অ-শূন্য হয়, তাহলে
-
poly1 :=poly1 এর পরবর্তী
-
poly2 :=poly2 এর পরের
-
-
-
-
নোডের পরের:=poly1 বা poly2
-
ডামির পরবর্তী ফিরে আসুন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class polynomial: def __init__(self, coeff = 0, pow = 0, nxt = None): self.coefficient = coeff self.power = pow self.next = nxt def create_poly(expression): head = None for element in expression: if head == None: head = polynomial(element[0], element[1]) else: temp = head while temp.next != None: temp = temp.next if temp.next == None: temp.next = polynomial(element[0], element[1]) return head def show_poly(head): temp = head while temp.next != None: print(str(temp.coefficient) + 'x^' + str(temp.power), end = ' + ') temp = temp.next if temp.next == None: print(str(temp.coefficient) + 'x^' + str(temp.power), end=' = 0') def solve(poly1, poly2): dummy = node = polynomial() while poly1 and poly2: if poly1.power > poly2.power: node.next = node = poly1 poly1 = poly1.next elif poly1.power < poly2.power: node.next = node = poly2 poly2 = poly2.next else: coef = poly1.coefficient + poly2.coefficient if coef: node.next = node = polynomial(coef, poly1.power) poly1 = poly1.next poly2 = poly2.next node.next = poly1 or poly2 return dummy.next poly1 = create_poly([[1,1], [1,2]]) poly2 = create_poly([[2,1], [3, 0]]) poly3 = solve(poly1, poly2) show_poly(poly3)
ইনপুট
poly1 = create_poly([[1,1], [1,2]]) poly2 = create_poly([[2,1], [3, 0]])
আউটপুট
3x^1 + 1x^2 + 3x^0 = 0