单链表删除结点

试编写算法,按照输入数据建立带头结点的单向链表,在单向链表中删除所有的偶数元素结点,并输出删除后的新的单链表。

输入格式:

-11 5 9 8 7 3 1 0

输出格式:

-11 5 9 7 3 1

输入样例:

在这里给出一组输入。例如:

1 2 3 4 6 7 8 9 0

输出样例:

在这里给出相应的输出。例如:

1 3 7 9

# 定义链表节点类
class Node:
    def __init__(self, data=None):
        self.data = data
        self.next = None

# 定义单向链表类
class LinkedList:
    def __init__(self):
        self.head = Node()  # 初始化带头结点

    # 添加节点到链表尾部
    def append(self, data):
        new_node = Node(data)
        cur = self.head
        while cur.next:  # 遍历到链表的最后一个节点
            cur = cur.next
        cur.next = new_node

    # 遍历并删除所有偶数节点
    def delete_even(self):
        prev = self.head  # 从头结点开始遍历
        cur = self.head.next  # 跳过头结点
        while cur:
            if cur.data % 2 == 0:  # 如果当前节点是偶数
                prev.next = cur.next  # 将前一个节点的next指向当前节点的next,删除当前节点
            else:
                prev = cur  # 不是偶数则移动prev指针
            cur = cur.next  # 移动cur指针到下一个节点

    # 遍历链表并打印元素
    def display(self):
        cur = self.head.next  # 跳过头结点
        while cur:
            print(cur.data, end=" ")
            cur = cur.next
        print()

# 主程序
def main():
    linked_list = LinkedList()  # 初始化带头结点的单向链表

    # 获取用户输入
    user_input = input().split()

    # 将输入的数字添加到链表,遇到0结束
    for num in user_input:
        num = int(num)
        if num == 0:
            break
        linked_list.append(num)

    # 删除偶数元素节点
    linked_list.delete_even()

    # 显示删除偶数后的链表
    linked_list.display()

    return 0

# 调用主程序
main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莹雨潇潇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值