在计算机科学中,Python链表实现是一种基础而重要的数据结构技术。本教程将手把手教你如何使用链表来表示和操作多项式,非常适合编程初学者。通过这个项目,你不仅能掌握链表操作的核心思想,还能深入理解多项式加法等数学运算在程序中的实现方式。
多项式如 3x⁴ + 2x² + 5 通常包含稀疏项(即很多系数为0的项)。如果用数组存储,会浪费大量空间。而链表可以只存储非零项,节省内存且灵活高效。
首先,我们需要一个节点类来存储每一项的信息:系数(coefficient)和指数(exponent)。
class TermNode: def __init__(self, coef, exp): self.coef = coef # 系数 self.exp = exp # 指数 self.next = None # 指向下一个节点 接下来,我们构建一个 Polynomial 类,用于管理整个多项式链表。
class Polynomial: def __init__(self): self.head = None # 链表头节点 def add_term(self, coef, exp): """按指数降序添加项""" new_node = TermNode(coef, exp) # 如果链表为空,或新项指数最大 if not self.head or self.head.exp < exp: new_node.next = self.head self.head = new_node else: current = self.head # 找到插入位置 while current.next and current.next.exp > exp: current = current.next # 如果指数相同,合并系数 if current.exp == exp: current.coef += coef # 如果系数变为0,删除该项 if current.coef == 0: if current == self.head: self.head = current.next else: prev = self.head while prev.next != current: prev = prev.next prev.next = current.next else: new_node.next = current.next current.next = new_node 两个多项式相加时,我们遍历两个链表,根据指数大小决定如何合并。
def add(self, other): """返回当前多项式与另一个多项式相加的结果""" result = Polynomial() p1 = self.head p2 = other.head while p1 and p2: if p1.exp > p2.exp: result.add_term(p1.coef, p1.exp) p1 = p1.next elif p1.exp < p2.exp: result.add_term(p2.coef, p2.exp) p2 = p2.next else: # 指数相同 result.add_term(p1.coef + p2.coef, p1.exp) p1 = p1.next p2 = p2.next # 添加剩余项 while p1: result.add_term(p1.coef, p1.exp) p1 = p1.next while p2: result.add_term(p2.coef, p2.exp) p2 = p2.next return result 为了方便查看结果,我们添加一个打印方法。
def __str__(self): if not self.head: return "0" terms = [] current = self.head while current: if current.exp == 0: terms.append(str(current.coef)) elif current.exp == 1: terms.append(f"{current.coef}x") else: terms.append(f"{current.coef}x^{current.exp}") current = current.next return " + ".join(terms).replace("+ -", "- ") 现在,让我们把所有代码组合起来并测试一下!
# 创建第一个多项式: 3x^4 + 2x^2 + 5poly1 = Polynomial()poly1.add_term(3, 4)poly1.add_term(2, 2)poly1.add_term(5, 0)# 创建第二个多项式: -x^4 + 4x^3 + x^2poly2 = Polynomial()poly2.add_term(-1, 4)poly2.add_term(4, 3)poly2.add_term(1, 2)# 相加result = poly1.add(poly2)print("Poly1:", poly1) # 输出: 3x^4 + 2x^2 + 5print("Poly2:", poly2) # 输出: -1x^4 + 4x^3 + 1x^2print("Sum:", result) # 输出: 2x^4 + 4x^3 + 3x^2 + 5 通过本教程,你已经掌握了如何用Python链表实现多项式的基本操作。这项技能不仅巩固了你对链表操作的理解,也为后续学习更复杂的数据结构教程打下基础。同时,你也亲手实现了多项式加法这一经典算法问题。
建议你尝试扩展功能,比如实现减法、乘法,或者从字符串解析多项式。动手实践是掌握数据结构的最佳方式!
本文由主机测评网于2025-12-13发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025127256.html