0 Daumen
369 Aufrufe

Hallo alle zusammen. Ich hatte Probleme bei einer Listenaufgabe in C und habe gehofft, dass jemand mir helfen könnte.

Ich sollte im ersten Schritt eine Liste mit 15 Knoten  erstellen, wobei jeder Knoten zwei zufällige, vorzeichenbehaftete Fließkommazahlen beinhaltet. ( Habe ich selber geschafft)

Bei der zweiten Teilaufgabe sollte ich die Summe der jeweiligen beiden Zahlen in jedem Knoten speichern. (Habe ich auch)

Bei der dritten Teilaufgabe: Sotieren Sie die Liste so, dass zuerst die kleinste, negative Summe am Anfang der Liste steht un die größte positive Summe am Ende der Liste steht. ->( die Aufgabe habe ich nicht und ich weiß auch nicht wie es auszusehen hat . Wäre nett, wenn jemand mir helfen könnte)


Hier mein jetziges Code:

#include <stdio.h>
#include <stdlib.h>
#define ITERATIONS 15

    struct node {
        float ADCSignal;
        float ZweitesSignal;
        float Summe;
        struct node *Next;
        };

    struct node *Head, *Z;


    void ListInit() {

    Head = (struct node *) malloc(sizeof *Head);
    Z    = (struct node *) malloc(sizeof *Z);


    Head->Next = Z;
    Z->Next = Z;

    Head->ADCSignal = 8;
    Z->ADCSignal = 1000;
    }


    struct node *InsertAfter(float Data,float ZweitesSignal, struct node *T){

        static int Counter = 0;

        struct node *X;

        X = (struct node *) malloc(sizeof  X);


        Counter++;


        printf("Anzahl neuer Daten-Knote: %d \n", Counter);


        X->ADCSignal = Data;


        X->ZweitesSignal= ZweitesSignal;
        X->Summe= Sikerim+Data;


        X->Next = T->Next;


        T->Next = X;


        return(X);


    }

    struct node *PrintNode(struct node *T){

        printf("%.2f\t+\t%.2f\t=%f\n", T->ADCSignal,T->ZweitesSignal,T->Summe);

        return(T->Next);

    }



    struct node *DeleteNext(struct node *T){

    static int Counter = 0;

    struct node *X;

    X = T->Next;
    T->Next = T->Next->Next;

    free(X);

    Counter++;

    printf("Anzahl aller geloeschten Daten-Knoten; %d \n", Counter);

    return(T);

    }

    void DestructList() {
        struct node *T;

        T = Head;

        while(T->Next != T->Next->Next){
                T = DeleteNext(T);

        }
        free(Head);
        printf("Head geloescht \n");

        free(Z);
        printf("Z geloescht \n");

    }
    float RandomInput(void){
    float dRandom;
    dRandom=(float)((rand()%256)-128);
    return dRandom;
    }




int main()
{
    struct node *T;

    int i;

srand(time(NULL));
    ListInit();

    T = InsertAfter(RandomInput(),RandomInput(),Head);

    for(i=1; i<ITERATIONS;i++){

        T = InsertAfter(RandomInput(),RandomInput(),T);
    }

    T = Head->Next;
    while(T!= T->Next){

        T = PrintNode(T);
    }


    DestructList();



    return 0;
}


Avatar von

1 Antwort

+1 Daumen
Sotieren Sie die Liste so, dass zuerst die kleinste, negative Summe am Anfang der Liste steht un die größte positive Summe am Ende der Liste steht.

Ich würde hier einen einfachen BubbleSort-Algorithmus implementieren:

https://www.inf-schule.de/grenzen/komplexitaet/sortieren/sortieralgorithmen/bubblesort


Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community