www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Softwaretechnik und Programmierung" - Listen in C?
Listen in C? < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Listen in C?: einfach und doppelt verkettet
Status: (Frage) beantwortet Status 
Datum: 15:30 Di 22.03.2011
Autor: bandchef

Aufgabe
- Datentyp für eine doppelt verkettete Liste schreiben
- Funktion schreiben die das Element aus der Liste löscht, das nach einem angegebenen Element in der Liste steht.


Hi!

Ich soll die oben gezeigt Aufgabe lösen. Ich weiß aber nicht recht was das soll, insbesondere auch weil meine Vorlesungskopie zur "Vorstellung" nicht viel hergibt. Ich weiß quasi nicht was das soll.

Könnt ihr mir Anstöße geben dieses Problem besser zu verstehen und helfen?

        
Bezug
Listen in C?: Antwort
Status: (Antwort) fertig Status 
Datum: 20:33 Mi 23.03.2011
Autor: rainerS

Hallo!

> - Datentyp für eine doppelt verkettete Liste schreiben
>  - Funktion schreiben die das Element aus der Liste
> löscht, das nach einem angegebenen Element in der Liste
> steht.
>  
> Hi!
>  
> Ich soll die oben gezeigt Aufgabe lösen. Ich weiß aber
> nicht recht was das soll, insbesondere auch weil meine
> Vorlesungskopie zur "Vorstellung" nicht viel hergibt. Ich
> weiß quasi nicht was das soll.
>  
> Könnt ihr mir Anstöße geben dieses Problem besser zu
> verstehen und helfen?

In einer doppeltverketteten Liste enthält jedes Listenelement je einen Verweis auf das vorhergehende und auf das nachfolgende Listenelement, dazu noch die Information, die in dem Listenelement selbst enthalten sein soll.

Wie würde also ein passender Datentyp aussehen?

Viele Grüße
   Rainer

Bezug
                
Bezug
Listen in C?: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:30 Do 24.03.2011
Autor: bandchef

Also, so wie ich das grad verstanden hab, gibt es auch noch "einfach verkettete Listen". Ich hab da jetzt mal nen Code mit reingetan der zeigt wie ich da grad eine Struktur einer Liste programmiert hab. Ich weiß, was ich da jetzt getan habe, habe es mir auch aufgezeichnet. Was mir noch schleierhaft ist, ist, dass ich nicht weiß was man damit jetzt alles machen kann.

Momentan mach mein Code ja folgendes:

Ich hab quasi 3 Knöten mit jeweils einem int-Wert (42,34,44). Momentan sind die 3 Knöten (nennt man das überhaupt Knoten, das was ich grad versuche zu beschreiben? Oder nennt man es doch eher Element?) noch nicht miteinandern verbunden. Was kann ich nun aber machen wenn ich das ganze jetzt miteinander verbinde? Was ist dann da der Vorteil?

Was bringt mir ein head-Element am Anfang der Liste und ein z-Element am Ende der Liste? Nutzen? Vorteile? Ich hab das in meiner Vorlesung gelesen aber leider steht da nix wie man das dann implementiert!

Warum muss man am Ende einer Liste bzw. nach dem z-Element die Liste noch auf einen NULL-Zeiger zeigen lassen? Eine andere Möglichkeit ist doch, dass der letzte Knoten auf sich selbst zeigt. Unterschiede? Was bringen mir die Unterschiedlichen Möglichkeiten?

Wie kann ich mir die momentan angelegte Liste auf dem Bildschirm ausgeben lassen?

Könnt ihr mich aufklären?


Hier der Code:

#include<iostream>
using namespace std;


struct node
{
int value;
struct node* next;
};


int main()
{
node *liste1, *liste2, *liste3;

liste1 = new node;                  //wie nennt man das hier?
liste1 -> value = 42;

liste2 = new node;                  //wie nennt man das hier?
liste2 -> value = 43;

liste3 = new node;                  //wie nennt man das hier?
liste3 -> value = 44;


return 0;
}

Bezug
                        
Bezug
Listen in C?: Antwort
Status: (Antwort) fertig Status 
Datum: 21:28 Fr 25.03.2011
Autor: Event_Horizon

Hallo!

Bisher hast du eine einfach verkettete Liste, denn jedes Elemen zeigt auf das nächste, sobald du ein

liste1->next=liste2

machst. Du bräuchtest nach der gleichen Manier noch ein previous.

Der Witz ist, daß du nur die allererste Adresse node1 benötigst, denn die nächste Adresse kennt node1 ja selbst. Du kannst zum Anhängen also ne Funktion schreiben, die sich deine Liste entlang hangelt, bis sie das Ende erreicht, und dort was neues dran hängt:


void addNode(*node, int val){
   //Mit einer Schleife sich eine Node nach der anderen holen
   // bis der next-Pointer=0 ist.
   // Diesen auf einen neu zu erschaffenden node setzen,
   // und den neuen mit val füllen
}

int main()
{
   node *liste;
   liste->value=42;
   liste->next=0;


   addNode(liste, 43);
   addNode(liste, 44);
   addNode(liste, 45);


   return 0;
}

die main() hat keine Ahnung, wie viele Elemente in der liste sind, aber im Gegensatz zu einem Array, das nie überfüllt werden darf, ist das bei ner Liste auch nicht unbedingt notwendig.
Genauso ist es sehr einfach, einen Node aus der Liste zu entfernen, und die "offenen Enden" miteinander zu verbinden. Das geht bei nem Array nicht so einfach.


>> Was bringt mir ein head-Element am Anfang der Liste und ein z-Element am Ende der Liste? Nutzen?
>> Vorteile? Ich hab das in meiner Vorlesung gelesen aber leider steht da nix wie man das dann
>> implementiert!
>>
>> Warum muss man am Ende einer Liste bzw. nach dem z-Element die Liste noch auf einen NULL-Zeiger
>> zeigen lassen? Eine andere Möglichkeit ist doch, dass der letzte Knoten auf sich selbst zeigt.
>> Unterschiede? Was bringen mir die Unterschiedlichen Möglichkeiten?

Ich weiß nicht genau, was ein Head-Element oder ein z-Element ist, aber ich hab auch nie Informatik gelernt...
Letztendlich brauchst du markierungen, die bei ner verketteten Liste das Ende markieren, bei ner doppelt verketteten wäre auch eine Anfangsmarkierung nicht schlecht.

Sicher kannst du als Konvention festlegen, daß das letzte Element auf sich selbst zeigen soll. Aber dieser wert wäre ja nicht konstant, sondern würde sich immer, wenn ein neues Element hinzugefügt wird, ändern.
Außerdem ist es eine gute Konvention, Zeiger, die auf nichts zeigen, auf 0 zeigen zu lassen.


>> Wie kann ich mir die momentan angelegte Liste auf dem Bildschirm ausgeben lassen?

Du könntest dir nach Manier der addNode-Funktion eine weitere Funktion schreiben, die die Werte ausliest, und auf den Bildschirm ausgibt. Auch hier: Eine gesonderte Angabe, wieviele Nodes vorhanden sind, oder wo die alle liegen, ist nicht notwendig, es braucht nur den Zeiger auf das allererste Node.

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de