>백엔드 개발 >Golang >Go 언어에서 연결된 목록 노드를 삭제하는 방법

Go 언어에서 연결된 목록 노드를 삭제하는 방법

王林
王林원래의
2021-01-06 13:45:283315검색

Go 언어에서 연결된 목록 노드를 삭제하는 방법: 먼저 다음 노드의 값을 현재 삭제된 노드로 이동한 다음 [node.Next = node.Next.Next]와 같이 현재 노드의 Next를 변경합니다.

Go 언어에서 연결된 목록 노드를 삭제하는 방법

이 기사의 운영 환경: windows10 시스템, GO 1.11.2, thinkpad t480 컴퓨터.

특정 방법:

최적의 해결 방법:

다음 노드의 값을 현재 삭제된 노드로 이동한 후 현재 노드의 Next를 변경합니다

node.Val = node.Next.Val
node.Next = node.Next.Next

기타 방법:

p.next = p.next. next 삭제 목적을 달성하려면

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteNode(head *ListNode, val int) *ListNode {
    if head.Val == val{
        return head.Next
    }

    pre:=head   
    for head.Next.Val != val{
        head = head.Next
    }
    head.Next = head.Next.Next
    return pre
}

제목:

연결 리스트에서 노드 삭제
연결 리스트에서 주어진(끝이 아닌) 노드를 삭제할 수 있는 함수를 작성해 주세요. 삭제해야 합니다.

기존 연결 목록이 있습니다. head = [4,5,1,9], 다음과 같이 표현할 수 있습니다.

Go 언어에서 연결된 목록 노드를 삭제하는 방법

예 1:

입력: head = [4,5,1,9] , node = 5
출력: [4,1,9]
설명: 연결된 목록에 값이 5인 두 번째 노드가 있는 경우 함수를 호출한 후 연결된 목록은 4 -> 1 ->
예 2:

입력: 헤드 = [4,5,1,9], 노드 = 1
출력: [4,5,9]
설명: 연결 목록에서 값이 1인 세 번째 노드가 주어지면 그 이후 함수를 호출하면 연결된 목록은 4 -> 5 -> 9가 되어야 합니다.

Code

삭제 목적을 달성하려면 여전히 주의하세요

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteNode(node *ListNode) {
	for node.Next.Next != nil {
		node.Val = node.Next.Val
		node = node.Next
	}
	node.Val = node.Next.Val
	node.Next = nil
}

관련 권장 사항: golang 튜토리얼

위 내용은 Go 언어에서 연결된 목록 노드를 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.