Function: separate input characters from the keyboard with spaces. Press enter when q or Q is entered to indicate that the input is complete.
Release the main function first.
int main(){ MyNode *myNode = (MyNode *)malloc(sizeof(MyNode)); if (NULL == myNode) { return 0; } getNum(myNode); sortList(myNode); printStr(myNode); freeStr(myNode); return 0;}
Then the struct
#include
#include
#include
typedef struct mynode{ long value; struct mynode *next;}MyNode;
The last few methods
void getNum(MyNode *myNode){ char s[20]; printf("please input num and end with q/Q\n"); scanf("%s", s); while ((strcmp(s, "q") != 0) && (strcmp(s , "Q") != 0)) { MyNode *temp = (MyNode *)malloc(sizeof(MyNode)); if (NULL == temp) { return; } temp->value = strtol(s , 0, 0); temp->next = NULL; myNode->next = temp; myNode = myNode->next; scanf("%s", s); } }void printStr(MyNode *node){ if (node == NULL) { return; } MyNode *temp = node; while (temp->next != NULL) { printf("%ld ", temp->next->value); temp = temp->next; }}void sortList(MyNode *node){ if (NULL == node) { return; } MyNode *startP = node->next; MyNode *nextP = node->next; while (startP->next != NULL) { nextP = startP->next; while (nextP->next != NULL) { if (startP->next->value > nextP->next->value) { long temp = startP->next->value; startP->next->value = nextP->next->value; nextP->next->value = temp; } nextP = nextP->next; } startP = startP->next; }}void freeStr(MyNode *node){ if (NULL == node) { return; } MyNode *old = NULL; while (node != NULL) { printf("d\n"); old = node; node = node->next; free(old); } }