功能是:从键盘输入字符以空格隔开 当输入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 <stdio.h> #include <stdlib.h> #include <string.h> 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 "); 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 "); old = node; node = node->next; free(old); } }