Avatar billede onkel_satan Nybegynder
07. oktober 2004 - 19:33 Der er 3 kommentarer og
1 løsning

return array driller

Har en funktion der skal returnere et array til en data struktur som jeg har lavet.
Funktionen er som følger:
nod* listToArray(nod* head){
    int i;
    int count(nod* head); //tæller elementer i linked list
    int amount = count(head);
    nod** linkedArray = (nod**)malloc(amount * sizeof(nod*));
    for(i=0; i<amount; i++){
        linkedArray[i] = head;
        head = head->next;
    }
    return linkedArray;
}

Nu skal jeg så bruge det array i en anden funktion og jeg bruger den saadan her:

nod* linkedArray =  listToArray(head);

Men det virker skudde :(

Nogen der kan fortælle hvor det gaar galt ?
Avatar billede arne_v Ekspert
07. oktober 2004 - 19:36 #1
nod** linkedArray

nod* linkedArray

virker ikke helt kompatible !
Avatar billede onkel_satan Nybegynder
07. oktober 2004 - 19:48 #2
hmm ja det kan jeg godt se. Har oxo prøvet med nod** og er sikkert oxo det rigtige. Men så gaar det galt senere hen. Tror lige jeg må uddybe det jeg har gang i.
Først fik jeg det her til at virke (quicksort en linked list):

void qsortLinked(nod** heada){
    nod* listToArray(nod* head);
    nod* head = *heada;
    int amount = count(head);
    int i;
    int count(nod* head);
    void quickSort(nod* a[], int left, int right);
    nod** linkedArray = (nod**)malloc(amount * sizeof(nod*));
    for(i=0; i<amount; i++){
        linkedArray[i] = head;
        head = head->next;
    }
    quickSort(linkedArray, 0, (amount-1));
       
    *heada = linkedArray[0];
    for(i=0; i<amount; i++){
        if(i<(amount-1)){
            linkedArray[i]->next =linkedArray[i+1];
        }else{
            linkedArray[i]->next = NULL;
        }
    }
}

Nu er det saa at jeg vil have lagt den del af funktionen der 'konvertere' den linkede liste til et array ind i en funktion for sig selv da jeg skal bruge den igen senere hen uden quicksorten vel og maerket.

Det gaar saa galt naar jeg bruger:

nod**linkedArray =  listToArray(head);
quickSort(linkedArray, 0, (amount-1));
.....
...
.

Håber det er gør det lidt mere klart.
Avatar billede onkel_satan Nybegynder
07. oktober 2004 - 20:08 #3
dohhh.... fandt selv fejlen. Det eneste der var forkert var som du sagde at nod** og nod*

Derefter var jeg kommet til at bruge %d istedet for %s og trorede derfor at jeg fik udskrevet nogle adresser. Men det virker nu.
Takker.

Smid et svar for point.
Avatar billede arne_v Ekspert
07. oktober 2004 - 20:10 #4
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester