to make things a little clear:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct charRecord
{
char numberone;
char numbertwo;
struct charRecord *next;
};
typedef struct charRecord charNode;
void addElement(charNode **start, char numberone, char numbertwo);
void printList(charNode *start);
charNode* newNode(double numberone, double numbertwo);
charNode* getString(charNode *start);
charNode* reverse(charNode *start);
int main()
{
charNode *start = NULL;
start = getString(start);
//reverse(start);
printList(start);
printf("\n +--+ reversing... +--+ \n");
start = reverse(start);
//printList(start);
return 0;
}
charNode* getString(charNode *start)
{
addElement(&start, 'A', 'A');
addElement(&start, 'B', 'B');
addElement(&start, 'C', 'C');
return start;
}
void addElement(charNode **start, char numberone, char numbertwo)
{
charNode *temp,*prev, *loc;
temp = newNode(numberone, numbertwo);
if (*start == NULL)
{
*start = temp;
}
else
{
loc = *start;
prev = NULL;
while (loc != NULL)
{
prev = loc;
loc = loc->next;
}
temp->next = loc;
if (prev == NULL)
{
*start = temp;
}
else
{
prev->next = temp;
}
}
}
charNode* newNode(double numberone, double numbertwo)
{
charNode *temp;
temp = (charNode *) malloc(sizeof(charNode));
if (temp == NULL)
{
printf("WARNING - Memory allocation error\n");
exit(EXIT_FAILURE);
}
temp->numberone = numberone;
temp->numbertwo = numbertwo;
temp->next = NULL;
return temp;
}
void printList(charNode *start)
{
while (start != NULL )
{
printf("\n%c %c\n", start->numberone, start->numbertwo);
/*if (start->next != NULL)
{
printf("%s %.2f %.2f %s", "next element is -+> ", start->next->numberone, start->next->numbertwo, "**OK**");
}*/
start = start->next;
}
}
charNode *reverse(charNode *current)
{
charNode *temp2;
charNode *temp3 = NULL;
for( charNode *temp = current; temp; temp = temp2 )
{
temp2 = temp->next;
temp->next = temp3;
temp3 = temp2;
printf("\n%c %c\n", temp3->numberone, temp3->numbertwo );
}
return temp2;
}
/*
A A
B B
C C
+--+ reversing... +--+
B B
C C
*/
should be:
BB
AA
CC