题解 | #字符串加密#

从单向链表中删除指定值的节点

http://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f

写链表好费时间...

class Node(object):
    def __init__(self, data, next=None):
        self.data = data
        self.next = next

class LinkedList(object):
    def __init__(self, head = None):
        self.head = Node(head)
    def __len__(self):
        #功能:输入头节点,返回链表长度
        curr = self.head
        counter = 1
        while curr.next is not None:
            counter += 1
            curr = curr.next
        return counter

    def prints(self):
        curr = self.head
        while curr is not None:
            print(curr.data,end=' ')
            curr = curr.next

    def insert(self, data, prev):
        node = Node(data=data)
        curr_node = self.head
        while curr_node is not None:
            if curr_node.data == prev:
                x = curr_node.next
                node.next = x
                curr_node.next = node
                break
            curr_node = curr_node.next
        return node

    def delete(self, data):
        node = Node(data=data)
        curr_node = self.head
        if curr_node.data == data:
            curr_node = None
        while curr_node.next is not None:
            if curr_node.next.data == data:
                x = curr_node.next.next
                curr_node.next = x
                break
            curr_node = curr_node.next
        return node

while True:
    try:
        l = list(map(int, input().split()))
        nodes, head, dels, inserts = l[0], l[1], l[-1], l[2:-1]
        a = LinkedList(head = head)
        for i in range(0,len(inserts)-1,2):
            a.insert(inserts[i],inserts[i+1])
        a.delete(dels)
        a.prints()
    except:
        break
全部评论

相关推荐

认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
07-07 12:47
门头沟学院 Java
码农索隆:竟然还真有卡体检报告的
点赞 评论 收藏
分享
评论
7
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务