功能是:从键盘输入字符以空格隔开 当输入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\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);
}
}