Listen ... Probleme bei einfügen über Priorität
-
Hallo ich habe ein Problem:
Wenn ich Knoten über die Priorität einlesen lassen will klappt das auch .. bis auf eine stelle: Die 1 wird vor der 99 angezeigt, obwohl es andersrum sein sollte ^^main:
#include "dekl.h" #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { Kset k2; k2.insert_prio(1,4); k2.insert_prio(5,8); k2.insert_prio(2,12); k2.insert_prio(55,2); k2.insert_prio(4,2); k2.insert_prio(99,3); k2.insert_prio(9,1); k2.insert_prio(7,40); k2.view_all(); getch(); return 0; } //---------------------------------------------------------------------------impl:
#include <iostream.h> #include <conio.h> class Kset { private: struct Knoten { int Inhalt; int Prior; Knoten *pNext; }; int Anzahl; Knoten *pFirst; Knoten *pLast; public: Kset(); ~Kset(); void insert_front(int obj); void insert_prio(int obj, int prio); void view_all(); }; #include "impl.hpp"dekl
//Konstruktor/////////////////////////////////////////////////////////////////// Kset::Kset() { Anzahl = 0; pFirst = pLast = NULL; /*Knoten *Listenkopf = new Knoten; Knoten *Sentinal = new Knoten; pFirst = Listenkopf; Listenkopf->pNext = Sentinal; Sentinal->pNext = pLast;*/ } //Dekonstruktor///////////////////////////////////////////////////////////////// Kset::~Kset() { Knoten *ptemp = pFirst; for(; Anzahl>0;) { pFirst = pFirst->pNext; delete ptemp; ptemp = pFirst; Anzahl--; } } //alles Anzeigen//////////////////////////////////////////////////////////////// void Kset::view_all() { Knoten *pTemp = pFirst; for(int anz=Anzahl; anz>0;anz--) { cout<<pTemp->Inhalt<<" "; pTemp = pTemp->pNext; } } void Kset::insert_prio(int obj, int prio) { if(Anzahl == 0) { pFirst = new Knoten; pFirst->Inhalt = obj; pFirst->Prior = prio; pFirst->pNext = NULL, pLast = pFirst; } if(prio <= pFirst->Prior && Anzahl != 0) { Knoten *pNew = new Knoten; pNew->Inhalt = obj; pNew->Prior = prio; pNew->pNext = pFirst; pFirst = pNew; } if(prio > pFirst->Prior && Anzahl != 0) { Knoten *pNew = new Knoten; Knoten *pTemp = pFirst; pNew->Inhalt = obj; pNew->Prior = prio; pNew->pNext = NULL; while(pNew->Prior > pTemp->Prior && pTemp->pNext != NULL) { pTemp=pTemp->pNext; } Knoten *pHilf = pTemp->pNext; pTemp->pNext = pNew; pNew->pNext = pHilf; } Anzahl++; }