"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > किसी लिंक की गई सूची को उलट दें

किसी लिंक की गई सूची को उलट दें

2024-07-31 को प्रकाशित
ब्राउज़ करें:835

Reverse a linked list in go

यह नए डेवलपर्स को देने के लिए एक पसंदीदा प्रश्न है। यदि आपके पास एक अच्छा डेटा संरचना वर्ग है तो यह बहुत आसान है।

एकल लिंक की गई सूची को उलट दें। (यह लीटकोड 206 है)

कार्यान्वयन के लिए, मैंने लिंक की गई सूची को एक सामान्य प्रकार बनाना चुना है।

type Node[T any] struct {
    Data T
    Next *Node[T]
}

type LinkedList[T any] struct {
    Head *Node[T]
}

func (ll *LinkedList[T]) Append(data T) {
    newNode := &Node[T]{Data: data, Next: nil}

    if ll.Head == nil {
        ll.Head = newNode
        return
    }

    current := ll.Head
    for current.Next != nil {
        current = current.Next
    }
    current.Next = newNode
}

और रिवर्स फ़ंक्शन के लिए, यह एक ही पास के साथ किया जाता है, यह पहचानते हुए कि हमें बस पिछले नोड के लिए एक पॉइंटर बनाए रखना है, फिर दिए गए नोड के 'अगले' को पिछले पर सेट करना है।

जब हम अंत तक पहुंचते हैं, तब हमें पता चलता है कि वर्तमान नोड सूची का नया 'प्रमुख' है।

func (ll *LinkedList[T]) ReverseLinkedList() {
    var prev *Node[T] = nil
    var ptr *Node[T] = ll.Head
    for ptr != nil {
        var next *Node[T] = ptr.Next
        ptr.Next = prev
        prev = ptr
        if next == nil {
            ll.Head = ptr
        }
        ptr = next
    }
}

क्या हम सीमा की स्थिति से चूक गए हैं? यदि सूची अब दोहरी रूप से जुड़ी हुई सूची है तो क्या जटिलताएँ जुड़ जाती हैं? टिप्पणियों में क्या है मुझे जानने दें।

धन्यवाद!

इस पोस्ट और इस श्रृंखला के सभी पोस्ट का कोड यहां पाया जा सकता है

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/johnscode/revers-a-linked-list-in-go-583i?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3