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++;
    }
    

Anmelden zum Antworten