Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » einfach verkettete Liste

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.01.2008, 11:06 Uhr
~weissnichtweiter
Gast


Hi, ich habe eine Aufgabe bei der ich nicht so richtig weiter komme :

In dieser Aufgabe gehen wir von einer aufsteigend sortierten verketteten Liste aus. Diese Liste kann
Duplikate enthalten, d.h. mehrere Listenelemente können diesselbe Nutzinfo haben. Für die Liste können
Sie folgende Struktur verwenden:


C++:
struct SortierteListe {
int data ;
SortierteListe * next ;
};



(a) Schreiben Sie eine Funktion SortierteListe* neueSortierteListe(int info), die eine aus einem Element bestehende Liste erzeugt. Dabei soll die Variable data des neuen Listenelements mit dem übergebenen Wert initialisiert werden. Die Funktion soll einen Zeiger auf das einzige Listenelement zurückliefern.
(b) Schreiben Sie eine Funktion SortierteListe* einfuegen(SortierteListe* l,int info), die
ein neues Element mit Nutzinfo info anlegt und an einer korrekten Stelle in die (sortierte) Liste l einfügt. Ein Zeiger auf die veränderte Liste soll zurückgegeben werden.

(c) Schreiben Sie eine Funktion void gibAus(SortierteListe* l), die alle in der Liste l eingetragenenWerte jeweils getrennt durch ein Leerzeichen auf dem Bildschirm ausgibt. Falls die Liste leer ist, soll der Text keine Werte ausgegeben werden.

(d) Schreiben Sie eine Funktion SortierteListe* loeschen(SortierteListe* l,int info), die alle
in der sortierten Liste vorhandenen Elemente mit Nutzinfo info löscht. Ein Zeiger auf die veränderte Liste soll zurückgegeben werden.

(e) Schreiben Sie eine Funktion SortierteListe* verbinde(SortierteListe* l1, SortierteListe*
l2), die zwei sortierte Listen verbindet. Die sich ergebende Liste soll wieder sortiert sein und alle Elemente aus Liste l1 und aus Liste l2 enthalten.

(f) Schreiben Sie eine Funktion SortierteListe* kopiere(SortierteListe* l), die eine übergebene
Liste l elementweise kopiert und einen Zeiger auf die kopierte Liste zurückgibt.

(g) Schreiben Sie eine Funktion SortierteListe* dreheUm(SortierteListe* l), die eine übergebeneListe l elementweise kopiert und dabei die Reihenfolge der Elemente umdreht.


Also zu (a) hab ich das hier:


C++:
#include <iostream>

using namespace std;


struct SortierteListe {
      
       int data;
       SortierteListe *next;
                    

};

SortierteListe *startZeiger = NULL;


SortierteListe *neueSortierteListe(int info){

          
            SortierteListe *neuesElement = new SortierteListe;
            neuesElement->data = info; // Besetze die Daten
            neuesElement->next=NULL;
            
    
    return neuesElement;
    
}

struct SortierteListe *Erster = NULL, *Letzter = NULL;

int main(){
    
    int info;
    
    cout << "Bitte daten eingeben: ";
    cin >> info;
            
                      
    cout << "Daten der Liste sind: " << neueSortierteListe(info) <<endl;  
    
    system("Pause");
    return 0;
}


weiß aber nicht ob das so richtig ist?
kann mir jemand helfen? ich komme bei den folgenden antworten nicht weiter

Dieser Post wurde am 06.01.2008 um 11:29 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.01.2008, 11:34 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Außer das du C und C++ mischt (aber das scheint bei den meisten "Professoren" wohl gang und gäbe zu sein)

für sauberes C++ müsste man Ansätze wie ein paar threads weiter unten benutzen. Denke aber mal ihr hattet einige Dinge vorgegeben und euer Prof kann wie gesagt nicht zwischen C und C++ unterscheide.

Jedenfalls solltest du deinen ListenPointer nicht global machen - für was denn auch? Variablen immer mit der niedrigsten "Freigabe" erstellen -> also ab damit nach main.

Dann kannst du das eine Element der Liste so ja nicht ausgeben, wenn dann müsstest du sowas machen:


C++:
cout << "Daten der Liste sind: " << neueSortierteListe(info)->data <<endl;



sonst gibst du ja nur den Pointer aus. Weiterhin benötigst du hierfür deine Variable startPointer überhaupt nicht.

Weiterhin sind wir kein Hausaufgabenservice
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.01.2008, 12:10 Uhr
~weissnichtweiter
Gast



Zitat von FloSoft:

Hey danke ersteinmal für deine antwort

Außer das du C und C++ mischt (aber das scheint bei den meisten "Professoren" wohl gang und gäbe zu sein)

für sauberes C++ müsste man Ansätze wie ein paar threads weiter unten benutzen. Denke aber mal ihr hattet einige Dinge vorgegeben und euer Prof kann wie gesagt nicht zwischen C und C++ unterscheide.

" Ja unserer Prof ist sehr verwirrt geb ich zu, sodass auch sein skript sehr zu wünschen übrig lässt..."

Jedenfalls solltest du deinen ListenPointer nicht global machen - für was denn auch? Variablen immer mit der niedrigsten "Freigabe" erstellen -> also ab damit nach main.

Dann kannst du das eine Element der Liste so ja nicht ausgeben, wenn dann müsstest du sowas machen:


C++:
cout << "Daten der Liste sind: " << neueSortierteListe(info)->data <<endl;



sonst gibst du ja nur den Pointer aus. Weiterhin benötigst du hierfür deine Variable startPointer überhaupt nicht.

Weiterhin sind wir kein Hausaufgabenservice


" Ja es ging mir auch nicht darum das die jemand machen soll nur die ansätze sind mir noch icht klar, weil ich mich mit listen nicht besonders gut d.h. eigentlich gar nicht auskenne... ich weiß nur soviel das man ne sturktur als basis brauch. dann kann man durch funktionen verschiedene sachen erledigen wie, element einfügen, löschen, sortierten usw.

Wie genau man das macht, weiss ich jedoch nicht. zb, aufgabenteil b

wenn ich ein neues Listenelement anlegen will, brauch ich dazu ein neues Struct? oder soll ich mit der funktion eine neue liste erzeugen, die dann an die alte liste (welche ja nur ein element haben soll) angefügt wird? also mir gehts da ums verständnis verstehe das noch nicht so genau
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.01.2008, 15:23 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von ~weissnichtweiter:

" Ja es ging mir auch nicht darum das die jemand machen soll nur die ansätze sind mir noch icht klar, weil ich mich mit listen nicht besonders gut d.h. eigentlich gar nicht auskenne...

also mir gehts da ums verständnis verstehe das noch nicht so genau


das sollte doch eingentlich im Unterricht (Vorlesung?) behandelt worden sein. Wenn nicht, dann besorg Dir dieses Buch aus der Bibliothek, da drin steht bestens erklärt, wie's geht.

Nähere Information hier.

Hans


P.S. Das Bild zeigt zwar die dritte Auflage, es gibt inzwischen aber auch schon eine vierte. - Und wenn ein Informatikbuch es zu mehr als ein oder zwei Auflagen bringt, ist das meisst ein Zeichen für ein besonders Gutes Buch
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 06.01.2008 um 15:26 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.01.2008, 22:00 Uhr
ao

(Operator)



Zitat von ~weissnichtweiter:
Für die Liste können Sie folgende Struktur verwenden:

C++:
struct SortierteListe {
int data ;
SortierteListe * next ;
};




Sehr schlechte Vorgabe, Listenverwaltung und Nutzdaten in einer Struktur zu mischen. Zeigt, dass der Lehrer von Software-Design wenig Ahnung hat. Oder es für nicht so wichtig hält - was noch schlimmer wäre.

Du solltest den ersten Satz wörtlich nehmen: du *kannst* die gegebene Struktur verwenden, du kannst dir aber auch eine bessere ausdenken.

Gruß,
ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: