功能是:從鍵盤輸入字符以空格隔開 當輸入q或者Q時按回車表示輸入結束
先放出main函數
int main(){ MyNode *myNode = (MyNode *)malloc(sizeof(MyNode)); if (NULL == myNode) { return 0; } getNum(myNode); sortList(myNode); printStr(myNode); freeStr(myNode); return 0; }
#include#include #include typedef struct mynode{ long value; struct mynode *next; }MyNode;
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); } }