004
12.06.2006, 14:42 Uhr
Karldin Shinowa
Professional Noob
|
Zitat von (un)wissender: |
Aber Leute, fragt doch nicht zum 10000000000000mal warum euer Konsolenfenster wieder zugeht. Das steht in ebensovielen Threads und in der FAQ, in der Hilfe von Dev-Cpp, google, ... Ich kann es langsam nicht mehr hören!
|
Hmm ich weiß aber nicht worans liegt. der fehler liegt in sort das weiß ich... ich kann nur beschreiben was ich sehe oder schreiben es funktioniert nicht. es dürfte also in sort einen so argen fehler geben dasss er das programm beendet. ich finde keinen. Hier mal der GANZE Code:
C++: |
//Liste.h #ifndef Liste_h #define Liste_h
struct Knoten { int a; Knoten*next; Knoten*prev; Knoten(int a){this->a=a;} };
class Liste { private: Knoten*first; Knoten*last;
int number;
public: Liste(); void pushFront(int a); void pushBack(int a); void popFront(); void popBack(); Knoten* get(int index);
bool isEmpty(); void sort();
}; #endif
|
C++: |
//Liste.cpp #include"Liste.h"
Liste::Liste() { number=0; first=0; last=0; }
void Liste:: pushFront(int a) { if(isEmpty()) { pushBack(a); } else { Knoten*p=first; first=new Knoten(a); first->next=p; first->prev=0;
number++; } } void Liste:: pushBack(int a) { if(isEmpty()) { first=new Knoten(a); first->next=0; first->prev=0; last=first; } else { Knoten*p=last; last->next=new Knoten(a); last=last->next; last->next=0; last->prev=p; } number++; } void Liste:: popFront() { if(isEmpty()) return; Knoten*p=first->next; delete first; first=p; p->prev=0; number--; }
void Liste:: popBack() { if(isEmpty()) return; Knoten*p=last; delete last; last=p; p->next=0; number--; } Knoten* Liste:: get(int index) { index++; if(index>number) return 0; Knoten*p=0; if(index>number/2) { p=last;
for(int i=number;i!=index;i--) { p=p->prev; } } else { p=first;
for(int i=1;i!=index;i++) { p=p->next; } } return p;
}
bool Liste::isEmpty() {return(first==0&&last==0);}
void Liste::sort() { for(int i=1;i<=number;++i) { for(int j=1;j<number;++j) { Knoten* k1=get(j+0); Knoten* k2=get(j+1); if(k1->a > k2->a) { if(k1->prev==0) { Knoten*after=k2->next;
first=k2; k1->next=after; k2->next=k1; k1->prev=k2; k2->prev=0; } else if(k2->next=0) { Knoten*previous=k1->prev;
previous->next=k2; k2->prev=previous; k2->next=k1; k1->prev=k2; k1->next=0; last=k1; } else { Knoten*previous=k1->prev; Knoten*after=k2->next;
previous->next=k2; k2->prev=previous; k2->next=k1; k1->prev=k2; k1->next=after; after->prev=k1; } } } } }
|
C++: |
//main.cpp] #include"Liste.h" #include<iostream> #include<conio.h>
int main() { Liste MyListe;
MyListe.pushBack(3); MyListe.pushBack(7); MyListe.pushBack(1); MyListe.pushBack(8); MyListe.pushBack(3); MyListe.pushBack(2);
MyListe.sort();
std:: cout<<(MyListe.get(1))->a;
getchar(); }
|
-- Ich will die Welt verbessern, doch Gott gibt mir nicht den Code. |