Mir wurde eine Aufgabe zugewiesen, verschiedene Methoden für eine verkettete Liste in C zu erstellen. Ich bin auf der Swap-Methode fest, die nur scheint die gesamte verkettete Liste zu versauen. Hat jemand einen Rat, wo ich falsch liege? Prost!Swap-Position in einfach verknüpften Liste in C
Hier ist mein Code.
int main(int argc, char* argv[])
{
// A list of pointers to Reminders
const int MAX_ENTRIES = 10;
int numOfEntries = 0 ;
reminder_t* pFirst = (reminder_t*) malloc (sizeof(reminder_t));
reminder_t* pSecond = (reminder_t*) malloc (sizeof(reminder_t));
reminder_t* pThird = (reminder_t*) malloc (sizeof(reminder_t));
reminder_t* pStart = NULL;
if (pFirst != NULL)
{
strcpy(pFirst->message, "Mikes Birthday");
pFirst->dateOfEvent.day= 1;
pFirst->dateOfEvent.month= 1;
pFirst->dateOfEvent.year= 2013;
pFirst->pNext = NULL;
}
if (pSecond != NULL)
{
strcpy(pSecond->message, "Als Soccer Match");
pSecond->dateOfEvent.day= 2;
pSecond->dateOfEvent.month= 2;
pSecond->dateOfEvent.year= 2013;
pSecond->pNext = NULL;
}
if (pThird != NULL)
{
strcpy(pThird->message, "School Concert");
pThird->dateOfEvent.day= 3;
pThird->dateOfEvent.month= 3;
pThird->dateOfEvent.year= 2013;
pThird->pNext = NULL;
}
pFirst->pNext = pSecond;
pSecond->pNext = pThird;
pThird->pNext = NULL;
pStart = pFirst;
printf("\n------Before------\n");
listEntries(pStart);
swapPositonOf(pFirst,pThird);
printf("\n------After-aa-----\n");
listEntries(pStart);
getchar();
return 0;
}
void listEntries(reminder_t * pList)
{
printf("\n");
while (pList != NULL)
{
printf("%s\n", pList->message);
pList = pList->pNext;
}
}
void swapPositonOf(reminder_t* first , reminder_t* second)
{
reminder_t* pFirst = (reminder_t*) first;
reminder_t* pSecond = (reminder_t*) second;
reminder_t* temp = second->pNext;
pSecond->pNext = pFirst->pNext;
pFirst->pNext = temp;
temp = pSecond;
pSecond = pFirst;
pFirst = temp;
}
Erwartete Ausgabe:
------Before------
Mikes Birthday
Als Soccer Match
School Concert
------After-aa-----
School Concert
Als Soccer Match
Mikes Birthday
Ausgang:
------Before------
Mikes Birthday
Als Soccer Match
School Concert
------After-aa-----
Mikes Birthday
Bitte geben Sie ein bisschen mehr Informationen: genau was passiert, wenn Sie Ihre Liste sortieren? Was ist die Eingabe, Ausgabe und erwartete Ausgabe? – razlebe
Ist der Code anders als die Swap-Funktion und die Definition der Erinnerung wirklich notwendig? – BrainSteel
Warum die redundanten Umwandlungen am Anfang von 'swapPositionOf'? (Warum die Zuordnung von "first" zu "pFirst" & second überhaupt?) – Kninnug