?
Ich habe das Ganze noch mal "überarbeitet", ich schreib am besten den ganzen Source:
List.h
#include <iostream>
struct Knoten
{
int value;
Knoten* next;
Knoten* prev;
};
bool init_Knoten(Knoten* head, int value)
{
head->next = 0;
head->prev = 0;
head->value = value;
return(true);
}
bool sort(Knoten* head)
{
if(head->prev->value)
{
std::cout << "geht: head->prev" << std::endl;
if(head->value > head->prev->value)
{
Knoten* eins;
Knoten* zwei;
Knoten* vier;
std::cout << "Knoten* eins, zwei, vier;" << std::endl;
eins = head->prev->prev;
zwei = head->prev;
vier = head->next;
eins->next = head;
head->prev = eins;
head->next = zwei;
zwei->prev = head;
zwei->next = vier;
vier->prev = zwei;
sort(head);
return(true);
}
else
{
std::cout << "geht nicht:: head->value" << std::endl;
return(true);
}
}
else
{
std::cout << "geht nicht : if(head->prev)" << std::endl;
return(true);
}
}
bool sortieren(Knoten* head)
{
while(head->next->value)
{
std::cout << "Jupp" << std::endl;
if(head = head->next)
{
std::cout << "head = head->next;" << std::endl;
if(sort(head))
{
std::cout << "sort(head);" <<std::endl;
}
else
{
std::cout << "geht nicht: sort(head)" << endl;
}
}
}
return(true);
}
bool push(Knoten* previous, Knoten* newknoten)
{
newknoten->prev = previous;
newknoten->next = previous->next;
previous->next = newknoten;
return(true);
}
Test.cpp:
#include "C:/Programme/Microsoft Visual Studio/MyProjects/LIBDAN/List/list.h"
#include <iostream>
void main()
{
Knoten head, torpfen, drei, vier;
Knoten* lpKnoten;
init_Knoten(&head, 15);
init_Knoten(&torpfen, 153);
init_Knoten(&drei, 19);
init_Knoten(&vier, 13);
if(push(&head, &torpfen))
{
std::cout << "geht" <<std::endl;
if(push(&torpfen, &drei))
{
std::cout << "geht" << std::endl;
if(push(&drei, &vier))
{
std::cout << "geht" << std::endl;
}
}
}
lpKnoten = &head;
std::cout << lpKnoten->value << std::endl;
lpKnoten = lpKnoten->next;
std::cout << lpKnoten->value << std::endl;
lpKnoten = lpKnoten->next;
std::cout << lpKnoten->value << std::endl;
lpKnoten = lpKnoten->next;
std::cout << lpKnoten->value << std::endl;
if(sortieren(&head))
{
std::cout << "yuchuu!" << std::endl;
}
}
Dabei bekomme ich folgende Ausgabe:
geht
geht
geht
15
153
19
13
Jupp
head = head->next;
Und dazu mal wieder die Fehlermeldung von wegen beedet werden, blabla.
Eigentlich müsste aber sort (meiner Meinung nach) mindestens noch ein geht... oder geht nicht... ausgeben, tuts aber nicht???
thx
Glamdring