Saturday, 15 February 2014

Displaying stack linked list in C Issue -


यह स्रोत कोड है:

  # शामिल करें & lt; stdio.h & gt; # शामिल करें & lt; stdlib.h & gt; संरचना अंश {int num; इंट डिनोम; }; टाइपफीफ स्ट्रक्चर फ्रैक्चर फ्राक; टाइपिंग फेराक * फ्राकप्रट्र; संरचना FracNode {Frac fr; Struct FracNode * अगला; }; टाइपिंगफॉर्म फ्राकनोड फ्रनोड; टाइपिंग फ्राइनोड * फ्रनोडप्रट्र; Struct FracStack {int stkSize; FrNodePtr frNodePtr; }; टाइपफीफ स्ट्रक्चर फ्राकेस्टैक्स फ्रस्टकि; टाइपफेड फ्रेस्टक * फ्रस्टकप्रट्र; FrNodePtr createFrNode (शून्य); FrStkPtr createFrNodeStk (शून्य); शून्य पुशफायर नोड (FrStkPtr *, FrNodePtr); शून्य प्रिंटस्टाक (फ्र्रेस्टकप्रंट); Int main () {FrNodePtr frNodeTmpPtr = 0; FrNodePtr frNodeTmpPtr2 = 0; FrStkPtr frStkPtr = 0; FrNodeTmpPtr = createFrNode (); FrStkPtr = createFrNodeStk (); PushFrNode (& frStkPtr, frNodeTmpPtr); printStack (frStkPtr); FrNodeTmpPtr2 = createFrNode (); PushFrNode (& frStkPtr, frNodeTmpPtr2); printStack (frStkPtr); // केवल नए बनाए गए अंश मुद्रित होते हैं। FrNodeTmpPtr स्टैक के भाग के रूप में मुद्रित नहीं हुआ। क्या मेरे प्रिंट फ़ंक्शन या पुश समारोह में कोई समस्या है? नि: शुल्क (frNodeTmpPtr); नि: शुल्क (frNodeTmpPtr2); नि: शुल्क (frStkPtr); वापसी 0; } // प्रिंट स्टैक शून्य प्रिंटस्टाक (फ्रस्टकप्रंट स्ट्कपीटीआर) {जबकि (स्ट्कपीटीआर-> फ्रेन्डेप्रेट्र! = 0) {प्रिंटफ़ ("न्यूमेरेटर:% डी एंड डोंमिनेटर:% डी \ n \ n", स्टक-पीटी- & gt; फ्रेंडेपट्र-> और जीटी ; Fr.num, stkPtr- & gt; frNodePtr- & gt; fr.denom); StkPtr- & gt; frNodePtr = stkPtr- & gt; frNodePtr- & gt; अगला; }      वापसी; } // पुश नोड शून्य पुशफायरनोड (फ्रस्टिकपीट्र * एसटीकेपीटीआर, फ्रनडेप्रेट्र एनपीटीआर) {यदि ((* एसटीकेपीटीआर) - & gt; एफएनडीएपीटी! = 0) {एनटीपीटी-> जीडीपी = ((* एसटीकेपीटीआर)) - & gt; एफएनडीएपीटीआर; } (* StkPtr) - & gt; frNodePtr = nPtr; (* StkPtr) - & gt; stkSize ++; वापसी; } // स्टेक बनाओ FrStkPtr createFrNodeStk () {FrStkPtr frStkPtr; FrStkPtr = (FrStkPtr) मॉलोक (आकारफ (FrStk)); FrStkPtr- & gt; stkSize = 0; FrStkPtr- & gt; frNodePtr = 0; वापसी frStkPtr; } // नोड बनाएँ FrNodePtr createFrNode () {FrNodePtr frNodePtr; FrNodePtr = (FrNodePtr) मॉलोक (आकारफ (फ्रनोड)); FrNodePtr- & gt; अगले = 0; Printf ("संख्या प्रविष्ट करें:"); Scanf ("% d", & amp; (frNodePtr- & gt; fr.num)); करना {printf ("\ n एक गैर शून्य शून्य निर्दिष्ट करें:"); Scanf ("% d", और (frNodePtr- & gt; fr.denom)); यदि (frNodePtr-> gt; fr.denom & lt; 0) {frNodePtr- & gt; fr.denom = - (frNodePtr- & gt; fr.denom); FrNodePtr- & gt; fr.num = - (frNodePtr- & gt; fr.num); }} जबकि (frNodePtr- & gt; fr.denom == 0); वापसी frNodePtr; }  

मुख्य में, मैंने एक अंश बनाया, उसे स्टैक में बना दिया। इसे मुद्रित करें। फिर, मैंने एक और अंश बनाया, उसे स्टैक में धकेल दिया और इसे प्रिंट किया। समस्या यह है कि जब मैं स्टैक को प्रिंट करता हूं, तो यह केवल आखिरी अंश बनाया जाता है, जो कि दोनों अंश नहीं हैं।

नमूना चलाएं:

अंश प्रविष्ट करें: 1

एक शून्य-शून्य विभाजक दर्ज करें: 1

संख्यात्मक: 1 & amp; अंश: 1

अंश प्रविष्ट करें: 2

एक शून्य-शून्य विभाजक दर्ज करें: 2

संख्यात्मक: 2 & amp; प्रवासी: 2 // मैं इस हिस्से को 1/1 और 2/2 नहीं सिर्फ 2/2 प्रिंट करना चाहता हूं

प्रिंटिंग फ़ंक्शन को निम्न में बदलें:

  // प्रिंट स्टैक शून्य प्रिंटस्टाक (फ्र्रेस्टिकट्रेक्ट स्ट्कपीटीआर) {फ्रनोडपेंट पॉइंटर = स्टैक-पीटी- & gt; frNodePtr ; जबकि (सूचक! = 0) {printf ("संख्यात्मक:% डी एंड डोंमिनेटर:% d \ n \ n", सूचक- & gt; fr.num, पॉइंटर- & gt; फ़्रेडेनम); सूचक = सूचक- & gt; अगला; }     वापसी; }  

No comments:

Post a Comment