编写程序实现一元多项式的创建以及两个一元多项式相加和相乘的操作。 2.编写程序实现将输入的单链表排序成为有序单链表的操作。 3.编写程序实现算术表达式求值。
时间: 2024-12-23 21:27:03 浏览: 46
1. 实现一元多项式的创建和基本操作:
```python
class Polynomial:
def __init__(self):
self.coefficients = []
def add_term(self, coefficient, exponent):
self.coefficients.append((coefficient, exponent))
def __add__(self, other):
result = Polynomial()
for c1, e1 in self.coefficients:
for c2, e2 in other.coefficients:
if e1 == e2:
result.add_term(c1 + c2, e1)
elif e1 > e2:
result.add_term(c1, e1)
else: # e2 > e1
result.add_term(c2, e2)
return result
def multiply(self, other):
result = Polynomial()
for c1, e1 in self.coefficients:
for c2, e2 in other.coefficients:
result.add_term(c1 * c2, e1 + e2)
return result
# 示例
poly1 = Polynomial()
poly1.add_term(3, 0) # 3x^0
poly1.add_term(2, 1) # 2x^1
poly2 = Polynomial()
poly2.add_term(4, 0) # 4x^0
poly2.add_term(-1, 2) # -1x^2
sum_poly = poly1 + poly2
product_poly = poly1.multiply(poly2)
```
2. 排序单链表:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def sort_list(head):
if not head or not head.next:
return head
dummy = ListNode(0)
dummy.next = head
slow, fast = dummy, head.next
while fast and fast.next:
fast = fast.next.next
slow = slow.next
if slow.val < fast.val:
temp = slow.next
slow.next = fast
fast.prev = slow
slow = temp
return dummy.next
# 示例
head = ListNode(5, ListNode(3, ListNode(8, ListNode(6))))
sorted_head = sort_list(head)
```
3. 算术表达式求值:
```python
import operator as op
from collections import deque
def evaluate(expression: str):
tokens = deque(expression.split())
operators = {'+': op.add, '-': op.sub, '*': op.mul, '/': op.truediv}
num_stack, op_stack = [], []
while tokens:
token = tokens.popleft()
if token.isdigit():
num_stack.append(int(token))
elif token in operators:
right = num_stack.pop()
left = num_stack.pop()
op_stack.append((operators[token], (left, right)))
elif token == '(':
op_stack.append(token)
elif token == ')':
while op_stack[-1] != '(':
operator, args = op_stack.pop()
num_stack.append(operator(*args))
op_stack.pop() # remove the '('
while op_stack:
operator, args = op_stack.pop()
num_stack.append(operator(*args))
return num_stack[0]
# 示例
expression = "2 * 3 + 4 / 2"
result = evaluate(expression)
```
阅读全文
相关推荐


















