07. maj 2003 - 12:14Der er
12 kommentarer og 1 løsning
stack
Hej allesammen, Hvordan modificerer man nedenstaaende stack implementation saa top funktionen returnerer en reference til top item? prototypen for top functionen aendres saaledes til: item& top(); Et test program til opgaven vil vaere en stor hjaelp. Haaber at der en der kan hjaelpe mig. Paa forhaand tak
#include "stack2.template" // Include the implementation #endif
//******************************************************** // FILE: stack2.template // TEMPLATE CLASS IMPLEMENTED: stack<Item> (see stack2.h for documentation) // This file is included in the header file, and not compiled separately. // INVARIANT for the stack class: // 1. The items in the stack are stored in a linked list, with the top of the // stack stored at the head node, down to the bottom of the stack at the // final node. // 2. The member variable top_ptr is the head pointer of the linked list.
Hvis din kode virker som den er nu (hvor den returnerer en kopi af top-elementet), så er det bare at ændre typen af top, både i .h-filen og i .template filen.
int main() { stack<int> my_stack; my_stack.push(1); // Check at my_stack.top() == 1 my_stack.top() = 7; // Check at my_stack.top() == 7 return 0; }
Det at du både skal kunne checke top() og ændre i den gør at du faktisk har brug for top() i to udgaver. Både med og uden &, og lad være med at lave den const når den er med &.
Tak for dit svar, imponerende hurtigt. Jeg sidder lige med et andet project som har drillet i timevis, saa jeg vil vende tilbare senere, naar jeg har faaet kigget paa dit svar. Endnu engang tak
Det virker desvarre ikke. Kan du muligvis compile det og de hvad der sker. Jeg har pasted to filer ind som ikke var med i foerste omgang, saa programmet skulle vaere klar til dig. Jeg haaber at du kan finde fejlen. Tak igen ;-)
node2.h refererer til denne fil:
#ifndef MAIN_SAVITCH_NODE2_H #define MAIN_SAVITCH_NODE2_H #include <cstdlib> // Provides NULL and size_t #include <iterator> // Provides iterator and forward_iterator_tag
// FORWARD ITERATORS to step through the nodes of a linked list // A node_iterator of can change the underlying linked list through the // * operator, so it may not be used with a const node. The // node_const_iterator cannot change the underlying linked list // through the * operator, so it may be used with a const node. // WARNING: // This classes use std::iterator as its base class; // Older compilers that do not support the std::iterator class can // delete everything after the word iterator in the second line:
node2.template refererer til denne fil: // FILE: node2.template // IMPLEMENTS: The functions of the node template class and the // linked list toolkit (see node2.h for documentation). // // NOTE: // Since node is a template class, this file is included in node2.h. // Therefore, we should not put any using directives in this file. // // INVARIANT for the node class: // The data of a node is stored in data_field, and the link in link_field.
// Handle the case of the empty list if (source_ptr == NULL) return;
// Make the head node for the newly created list, and put data in it list_head_insert(head_ptr, source_ptr->data( )); tail_ptr = head_ptr;
// Copy rest of the nodes one at a time, adding at the tail of new list source_ptr = source_ptr->link( ); while (source_ptr != NULL) { list_insert(tail_ptr, source_ptr->data( )); tail_ptr = tail_ptr->link( ); source_ptr = source_ptr->link( ); } }
Der er problemer med at .cpp filen. Foelgende fejl forekommer: :\Documents and Setting\stack2.cpp(10) : error C2065: 'stack' : undeclared identifier C:\Documents and Settings\stack2.cpp(10) : error C2062: type 'int' unexpected C:\Documents and Settings\stack2.cpp(11) : error C2065: 'my_stack' : undeclared identifier C:\Documents and Settings\stack2.cpp(11) : error C2228: left of '.push' must have class/struct/union type C:\Documents and Setting\stack2.cpp(13) : error C2228: left of '.top' must have class/struct/union type Error executing cl.exe.
list_clear kan jeg ikke se i noget af den kode du har pastet, så du kommer nok til at smide lidt mere ind. Det lader til at du prøver at bruge noget der hedder list_clear, som ikke er defineret nogetsteds.
Opgaven blev afleveret igaar og jeg er noedsaget til at arbejde paa mine andre 5 fag, saa jeg har maattet acceptere at jeg ikke finder ud af fejlen i foerste omgang. Tak for hjaelpen, den har vaeret god
Jeg er nu alligevel nysgerrig over at se den del af koden hvor du bruger list_clear.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.