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