Pointers Go:实现紧急错误的双链表
更正: 链接#1 链接#2 从第一个环节,, 我确信恐慌性错误来自于此Pointers Go:实现紧急错误的双链表,pointers,linked-list,go,Pointers,Linked List,Go,更正: 链接#1 链接#2 从第一个环节,, 我确信恐慌性错误来自于此 func (A *DoublyLinkedList) AddHead(input_value interface{}) { temp_node := &Node{value: input_value, prev: nil, next: A.head} original_head_node := A.head original_head_node.prev = temp_node A.length++
func (A *DoublyLinkedList) AddHead(input_value interface{}) {
temp_node := &Node{value: input_value, prev: nil, next: A.head}
original_head_node := A.head
original_head_node.prev = temp_node
A.length++
}
但当我把它用于双链接列表时,它会在不久后恐慌起来。但仍然失败,因为下面这一个未将原始头与上一个指针连接
func (A *DoublyLinkedList) AddHead(input_value interface{}) {
A.head = NewNode(input_value, nil, A.head)
A.length++
}
就是这个。这一个也有类似的问题
cannot assign to target_node.GetPrevNode().GetNextNode()
go不支持这样的指针引用吗?我只是在每次需要获取指针时分配一个新变量就解决了这个问题。但是我上面的第一个问题仍然没有编译
简而言之,在Go中添加新元素时,如何连接双链接列表?您需要初始化双链接列表中的属性。在我看来,您当前正在NewDoublyLinkedList()中创建对它的引用,并具有2个nil属性
type DoublyLinkedList struct {
head *Node // nil
tail *Node // nil
length int
}
当你这么做的时候
original_head_node := A.head // A.head == nil
original_head_node.prev = temp_node // You are trying to access a property in nil
对。在需要访问之前,我不知道如何首先初始化nil指针。你说的内部初始化是什么意思?我做这件事的时候就知道分配给零是行不通的。但是我想不出任何正确的方法。请看AddHead方法中的第一行。初始化节点结构的方法应该给出答案。A.head=NewNode(输入值,nil,A.head)。你是说这个吗?这仅适用于单链接列表。我需要处理原始head节点的prev节点。