Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में स्टैक का उपयोग करके लिंक्ड लिस्ट को उल्टा करना


लिंक्ड लिस्ट डायनामिकली मेमोरी आवंटित करती है, जिसका उपयोग स्टैक को लागू करने के लिए किया जाता है। यह प्रोग्राम C++ प्रोग्रामिंग में लिंक्ड लिस्ट को उल्टा करने को प्रदर्शित करता है। यहां, उम्मीदवार अपेक्षित परिणाम प्राप्त करने के लिए निम्नलिखित दृष्टिकोण अपना सकते हैं। एल्गोरिदम निम्नलिखित है:

एल्गोरिदम

शुरुआत 
चरण 1: नोड पॉइंटर टाइप का एक खाली स्टैक बनाएं 
चरण 2: लिस्ट को ट्रैवर्स करें और उसके सभी नोड्स को स्टैक पर पुश करें 
चरण 3: हेड नोड से फिर से लिस्ट को ट्रैवर्स करें 
चरण 4: स्टैक टॉप से वैल्यू पॉप करें 
चरण 5: उन्हें उल्टे क्रम में कनेक्ट करें 
चरण 6: प्रिंट करें 
रुकें

उपरोक्त एल्गोरिदम के आधार पर, निम्नलिखित C++ कोड तैयार किया गया है जहां stdlib लाइब्रेरी फाइल स्टैक से संबंधित प्रमुख मेथड्स उपलब्ध कराने में महत्वपूर्ण भूमिका निभाती है:

उदाहरण

#include <iostream> 
#include <stdlib.h> 
using namespace std; 

struct linked_list { 
    int data; 
    struct linked_list *next; 
}; 

int stack[30], top = -1; 
struct linked_list* head = NULL; 

int printfromstack(int stack[]) { 
    cout << "\nStack after Reversal::"; 
    while (top >= 0) { 
        cout << stack[top--] << " "; 
    } 
} 

int push(struct linked_list** head, int n) { 
    struct linked_list* newnode = (struct linked_list*)malloc(sizeof(struct linked_list)); 
    newnode->data = n; 
    newnode->next = (*head); 
    (*head) = newnode; 
} 

int intostack(struct linked_list* head) { 
    cout << "Linked list::"; 
    while (head != NULL) { 
        printf("%d ", head->data); 
        stack[++top] = head->data; 
        head = head->next; 
    } 
} 

int main(int argc, char const *argv[]) { 
    push(&head, 7); 
    push(&head, 20); 
    push(&head, 3); 
    push(&head, 40); 
    intostack(head); 
    printfromstack(stack); 
    return 0; 
}

ऊपर दिए गए कोड में देखा जा सकता है कि सभी स्ट्रिंग ऑपरेशन कोड retrieveChar() मेथड में बंडल किए गए हैं, जिसे बाद में प्रोग्राम main() एक्जीक्यूशन में पास किया जाता है।

आउटपुट

Linked list:: 40 3 20 7 
Stack after Reversal:: 7 20 3 40

  1. C++ STL में List reverse फ़ंक्शन C++ STL में List reverse फ़ंक्शन

    STL में List क्या हैList एक डेटा संरचना है जो अनुक्रम में कहीं भी निरंतर समय सम्मिलन और विलोपन की अनुमति देती है। Lists को डबल लिंक्ड सूचियों के रूप में कार्यान्वित किया जाता है। Lists गैर-सन्निकट मेमोरी आवंटन की अनुमति देती हैं। List सरणी, वेक्टर और deque की तुलना में किसी भी स्थिति में तत्व के सम्

  1. - C++ में त्रिकोण में न्यूनतम पथ योग (Minimum Path Sum in Triangle)

    मान लीजिए हमारे पास एक त्रिकोण (triangle) है। हमें ऊपर से नीचे तक न्यूनतम पथ योग ढूंढना है। प्रत्येक चरण में हम नीचे की पंक्ति पर आसन्न संख्याओं पर जा सकते हैं। उदाहरण के लिए, यदि निम्नलिखित त्रिकोण है: [ [2], [3,4], [6,5,7], [4,1,8,3] ] ऊपर से नीचे तक न्यूनतम पथ योग 11 है (2 + 3 +

  1. C++ में पुनरावृत्ति का उपयोग करके लिंक्ड लिस्ट के वैकल्पिक नोड्स प्रिंट करें C++ में पुनरावृत्ति का उपयोग करके लिंक्ड लिस्ट के वैकल्पिक नोड्स प्रिंट करें

    लिंक्ड लिस्ट एक रैखिक डेटा संरचना है जो तत्वों को गैर-सन्निहित मेमोरी स्थानों में संग्रहीत करती है। प्रत्येक तत्व में लिंक्ड लिस्ट के अगले तत्व का एक पॉइंटर होता है। उदाहरण - इस समस्या में, हमें एक लिंक्ड लिस्ट दी गई है और हमें इस लिंक्ड लिस्ट के तत्वों को प्रिंट करना है लेकिन केवल वैकल्पिक तत्वों