verkettete Listen
-
hi leute ich hab hier ein problem.
Also ich will, dass im Unterprogramm Neues_Element eben ein Neues Element in der Liste hinzugefügt wird, das problem ist aber dass bei der Ausgabe jetzt nicht Sepp ausgegeben wird sonder die Adresse des Pointers pc. Ich weis einfach nicht was ich da machen soll kann mird jemand helfen?#include <iostream>
#include <stdio.h>
#include <string>
#include <iomanip>using namespace std;
struct ListElm {int Prio; string *name; struct ListElm *next;};
void PrintElm(struct ListElm *z)
{
cout << "\nListenelement:"
<< "\nGroese in Byte: " << dec << sizeof (*z)
<< "\nPrioritaet: " << z->Prio
<< "\nName: " << z->name
<< "\nVerkettungsinfo: " << hex << z->next
<< dec << "\n\n";
}void PrintList(struct ListElm *Tail)
{
while (Tail != NULL)
{
cout << "\nListenelement:"
<< "\nGroese in Byte: " << dec << sizeof (*Tail)
<< "\nPrioritaet: " << Tail->Prio
<< "\nName: " << Tail->name
<< "\nVerkettungsinfo: " << hex << Tail->next
<< dec <<"\n\n";
Tail = Tail->next;
}}
struct ListElm* Neues_Element(int prio, const string s, struct ListElm *naechste)
{
struct ListElm *a;
string *pc;
string c;a = new struct ListElm;
a->Prio = prio;pc = new string;
*pc = s;
a->name = pc;a->next = naechste;
return a;
}
//_____________________________________________________________________________________________________________________________
int main()
{
struct ListElm *Wurzel, *element1;
char bez1 [] = "Sepp";element1 = Neues_Element(1, "Sepp", NULL);
Wurzel = element1;PrintList(Wurzel);
system("PAUSE");
return 0;
}
-
#include <iostream> #include <stdio.h> #include <string> #include <iomanip> using namespace std; struct ListElm {int Prio; string *name; struct ListElm *next;}; void PrintElm(struct ListElm *z) { cout << "\nListenelement:" << "\nGroese in Byte: " << dec << sizeof (*z) << "\nPrioritaet: " << z->Prio << "\nName: " << z->name << "\nVerkettungsinfo: " << hex << z->next << dec << "\n\n"; } void PrintList(struct ListElm *Tail) { while (Tail != NULL) { cout << "\nListenelement:" << "\nGroese in Byte: " << dec << sizeof (*Tail) << "\nPrioritaet: " << Tail->Prio << "\nName: " << Tail->name << "\nVerkettungsinfo: " << hex << Tail->next << dec <<"\n\n"; Tail = Tail->next; } } struct ListElm* Neues_Element(int prio, const string s, struct ListElm *naechste) { struct ListElm *a; string *pc; string c; a = new struct ListElm; a->Prio = prio; pc = new string; *pc = s; a->name = pc; a->next = naechste; return a; }int main() { struct ListElm *Wurzel, *element1; char bez1 [] = "Sepp"; element1 = Neues_Element(1, "Sepp", NULL); Wurzel = element1; PrintList(Wurzel); system("PAUSE"); return 0; }Code-Tags ...
-
Und mit c++ hat das nichts zu tun

Naja wenn du schon keine Klasse nutzen willst ... was schwachsin ist:
#include <iostream> #include <string> #include <iomanip> struct list_element { int priority; std::string data; list_element* ptr_next; list_element(int priority, std::string const& data, list_element* ptr_next(NULL)) : priority(priority), data(data), ptr_next(ptr_next) {} }; void print_element(list_element const& element) { std::cout << "\nListenelement: " << "\n-Groesse in Byte: " << std::dec << sizeof (element) << "\n-Prioritaet: " << element.priority << "\n-Daten: " << element.data << "\nVerkettungsinfo: " << std::hex << element.ptr_next << std::endl; } void print_list(list_element const& first) { for (const list_element* ptr(&first); ptr; ptr = ptr->ptr_next) print_element(*ptr); } list_element* create_element(int priority, std::string const& data, list_element* next) { return new list_element(priority, data, next); } void delete_element(list_element*& ptr_element) { delete ptr_element; ptr_element = NULL; } int main() { list_element* root(create_element(1, "Sepp", create_element(1, "Depp", NULL))); print_list(*root); std::cin.get(); }Aber jetzt wird dir auch auffallen, warum dein Konzept so nicht so sinnvoll ist. Du bräuchtest eine Methode insert_element ...
-
ich weis auch, dass man dass besser mit klassen machen sollte aber es ist ein praktikumsaufgabe für mein mechatronikstudium und klassen lernt man erst im nächsten kapitel. es is halt so eine art "einführungsaufgabe"
also verstehen tu ich es noch nicht. ich habs mal kopiert und ausprobiert aber bei mir kommt dann beim compilieren schon mal ne fehlermeldung.
außerdem benutzt du keinen pointer in struct ( ich hab ein pointer auf string und du nimmst nur einen string)es steht leider in der angabe, dass man ein pointer nehmen soll eigentlich ein pointer auf char. wie gesagt mein problem is , dass wenn du meinen code compilierst nicht sepp ausgegeben wird sondern die adresse des pointers pc!
-
Flo8989 schrieb:
wie gesagt mein problem is , dass wenn du meinen code compilierst nicht sepp ausgegeben wird sondern die adresse des pointers pc!
Dann dereferenzier' ihn!
greetz, Swordfish
-
ah jetzt hab ichs schon gelöst danke für die antworten