会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 128428个问题
人工智能/第二十六阶段:【加课】算法与数据结构/算法与数据结构 1楼
人工智能/第二十六阶段:【加课】算法与数据结构/算法与数据结构 2楼
人工智能/第二十六阶段:【加课】算法与数据结构/算法与数据结构 3楼

class Array():
    def __init__(self, size=4):
        self.size = size  # 记录容器大小
        self.item = [None]*size  # 分配空间
        self.length = 0

    def setitem(self, key, value):
        self.item[key] = value
        self.length += 1

    def getitem(self, key):
        return self.item[key]

    def len(self):
        return self.length

    def iter(self):
        for value in self.item:
            yield value


class Slot():
    def __init__(self, key=None, value=None):
        self.key = key
        self.value = value

    def str(self):
        return 'key: {} value: {}'.format(self.key, self.value)


class HashTable():
    def __init__(self):
        self.size = 4
        self.items = Array(self.size)

    def get_index(self, key):
        return hash(key) % self.size

    def put(self, key, value):
        s = Slot(key, value)
        index = self.get_index(key)
        self.items[index] = s

    def get(self, key):
        index = self.get_index(key)  # 获得key对应的索引
        return self.items[index]


if __name__ == '__main__':
    h = HashTable()
    h.put('name', '卢布')
    h.put('sex', '男')
    print(h.get('name'))
    print(h.get('sex'))

问题:

image.png

老师我的为什么出现这个问题

人工智能/第二十六阶段:【加课】算法与数据结构/算法与数据结构 6楼

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

    def __str__(self):
        return 'Node:{}'.format(self.value)


class LinkedList():
    def __init__(self):
        self.root = Node()
        self.next = None
        self.size = 0

    def append_end(self, value):  # 链表的后边加数据
        node = Node(value)
        if not self.root.next:
            self.root.next = node
        else:
            self.next.next = node
        self.next = node
        self.size += 1

    def append_first(self, value):
        node = Node(value)
        if not self.root.next:
            self.root.next = node
        else:
            temp = self.root.next
            self.root.next = node
            node.next = temp
        self.size += 1

    def __iter__(self):
        current = self.root.next
        while current is not self.next:
            yield current.value
            current = current.next
        yield current.value

    def find(self, value):
        for n in self.__iter__():
            if n == value:
                return n


if __name__ == '__main__':
    link = LinkedList()
    link.append_end('悟空')
    link.append_end('八戒')
    link.append_first('师傅')
    for i in link:
        print(i)
    print(Node('悟空'))
    print(link.find('悟空'))

老师请问,代码中将n改为n.value就会报错,但是原视频中不会报错,我这个代码中报错的原因是啥,n代表的是Node还是Node的value

image.png

人工智能/第二十六阶段:【加课】算法与数据结构/算法与数据结构 7楼

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

    def __str__(self):
        return 'Node:{}'.format(self.value)


class LinkedList():
    def __init__(self):
        self.root = Node()
        self.next = None
        self.size = 0

    def append_end(self, value):  # 链表的后边加数据
        node = Node(value)
        if not self.root.next:
            self.root.next = node
        else:
            self.next.next = node
        self.next = node
        self.size += 1

    def append_first(self, value):
        node = Node(value)
        if not self.root.next:
            self.root.next = node
        else:
            temp = self.root.next
            self.root.next = node
            node.next = temp
        self.size += 1

    def __iter__(self):
        current = self.root.next
        while current is not self.next:
            yield current
            current = current.next
        yield current


if __name__ == '__main__':
    link = LinkedList()
    link.append_end('悟空')
    link.append_end('八戒')
    link.append_first('师傅')
    for i in link:
        print(i)

老师请问,视频中对框红线的位置之前加了个if判断,我感觉没有必要加,运行结果也是好的,不知道我的理解有没有问题。

image.png

人工智能/第二十六阶段:【加课】算法与数据结构/算法与数据结构 8楼
人工智能/第二十六阶段:【加课】算法与数据结构/算法与数据结构 9楼
人工智能/第二十六阶段:【加课】算法与数据结构/算法与数据结构 10楼
人工智能/第二十六阶段:【加课】算法与数据结构/算法与数据结构 11楼
人工智能/第二十六阶段:【加课】算法与数据结构/算法与数据结构 12楼
人工智能/第二十六阶段:【加课】算法与数据结构/算法与数据结构 13楼
人工智能/第二十六阶段:【加课】算法与数据结构/算法与数据结构 14楼

百战程序员微信公众号

百战程序员微信小程序

©2014-2024 百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637