Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » sort einfache liste

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.12.2005, 18:35 Uhr
~kodo
Gast


Hi Leute habe hier eine einfach verkettete Liste. Ordnet sie aber nicht ganz richtig.
Hab ein feld mit 1, 1000, 100 sollte mir sie nach der größe ordnen also 1000, 100, 1
aber er gibt mir immer 100, 1000, 1 aus komme nicht auf meinen Fehler drauf.
Brauche Lösung dringend.
Danke im vorhinaus, Mfg. kodo


C++:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

typedef struct LISTELEMENT{
    int data;
    LISTELEMENT *next;
}ListElement;

int insertBeforeElement(int data, ListElement *index, ListElement **listB,ListElement **listE);
int insertAfterElement(int data, ListElement *index, ListElement **listB,ListElement **listE);
int dataOutput(ListElement *listB);


int main(void){

    ListElement *lB=NULL, *lE=NULL, *le=NULL;
    int feld[3]={ 1, 1000, 100}, i=0;

    for(i=0;i<3;i++){
        le=lB;
        while(le!=NULL){
            if(le->data<feld[i]){
                break;
            }
            le=le->next;
        }
        
        if(le!=NULL){
            insertBeforeElement(feld[i], le, &lB, &lE);
        }
        else{
            insertAfterElement(feld[i], le, &lB, &lE);
        }

        
    }
    dataOutput(lB);

    

    return 0;
}

int insertBeforeElement(int data, ListElement *index, ListElement **listB,ListElement **listE){
    
    ListElement *le=NULL;

    if((le=(ListElement *)malloc(sizeof(ListElement)))==NULL)
    {
        fprintf(stderr,"\n\nERROR: FEHLER BEIM SPEICHERRESERVIEREN\n\n");
        return EXIT_FAILURE;
    }
    le->data=data;
    le->next=NULL;

    if(*listB==NULL)    //liste leer
    {
        *listB=le;
        *listE=le;
        
        return EXIT_SUCCESS;
    }

    
    le->next=*listB;    //normalfall
    *listB=le;

    return EXIT_SUCCESS;
}


int insertAfterElement(int data, ListElement *index, ListElement **listB,ListElement **listE){
    
    ListElement *le=NULL;

    if((le=(ListElement *)malloc(sizeof(ListElement)))==NULL)
    {
        fprintf(stderr,"\n\nERROR: FEHLER BEIM SPEICHERRESERVIEREN\n\n");
        return EXIT_FAILURE;
    }
    le->data=data;
    le->next=NULL;

    if(*listB==NULL)    //liste leer
    {
        *listB=le;
        *listE=le;
        
        return EXIT_SUCCESS;
    }

    index->next=le;    
    *listE=le;
    
    return EXIT_SUCCESS;
}


int dataOutput(ListElement *listB)
{
    ListElement *le=NULL;
    int i=0;

    le=listB;

    while(le!=NULL)
    {
        printf("%d ", le->data);
        le=le->next;
        i++;
    }

    return EXIT_SUCCESS;
}



mod edit: benutze CPP Tags selber

Dieser Post wurde am 19.12.2005 um 20:20 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.12.2005, 18:59 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du ignorierst evtl das erste element und bearbeitest nur die anderen (ohne den OHNE cpp-tags geposteten code anzusehen)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.12.2005, 19:21 Uhr
~kodo
Gast


Nein er ignoriert das erste Element nicht, habs schon durchgeschaut bei insertElementBefore muss es was haben komm aber nicht drauf.
Bitte um Hilfe.
Mfg. kodo
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: