编写程序,先存入候选人信息(这里只保存候选人编号,候选人姓名,和选票数),再输入候选人名字(投票过程) ,输入结束后,输出统计结果。(采用链表存储数据
时间: 2024-04-25 16:26:04 浏览: 96
该程序实现投票及统计选票并输出
5星 · 资源好评率100%
好的,我可以为您提供一个简单的链表存储数据的程序实现。以下是代码:
```python
class Candidate:
def __init__(self, id, name, votes):
self.id = id
self.name = name
self.votes = votes
self.next = None
class CandidateList:
def __init__(self):
self.head = None
def add(self, candidate):
if not self.head:
self.head = candidate
else:
curr = self.head
while curr.next:
curr = curr.next
curr.next = candidate
def find_by_name(self, name):
curr = self.head
while curr:
if curr.name == name:
return curr
curr = curr.next
return None
def increment_votes(self, name):
candidate = self.find_by_name(name)
if candidate:
candidate.votes += 1
def print_result(self):
curr = self.head
while curr:
print(f"{curr.name}: {curr.votes}")
curr = curr.next
```
首先,我们定义了一个`Candidate`类表示候选人信息,包含候选人编号、姓名和得票数。然后,我们定义了一个`CandidateList`类来表示候选人列表,包含添加候选人、根据名称查找候选人、增加候选人票数和输出统计结果等方法。
接下来,我们可以使用这些方法来完成投票过程。以下是示例代码:
```python
# 创建候选人列表
candidates = CandidateList()
# 存入候选人信息
candidates.add(Candidate(1, "张三", 0))
candidates.add(Candidate(2, "李四", 0))
candidates.add(Candidate(3, "王五", 0))
# 投票过程
while True:
name = input("请输入候选人姓名(输入exit结束投票):")
if name == "exit":
break
candidate = candidates.find_by_name(name)
if candidate:
candidates.increment_votes(name)
else:
print("该候选人不存在")
# 输出统计结果
candidates.print_result()
```
在这个示例中,我们首先创建了一个空的候选人列表,然后存入了三个候选人的信息。接着,我们开始进行投票过程,输入候选人姓名来增加对应候选人的票数,输入`exit`结束投票。最后,我们输出了统计结果,显示每个候选人的得票数。
阅读全文