C语言链表实现冒泡法排序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语⾔链表实现冒泡法排序功能是:从键盘输⼊字符以空格隔开当输⼊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);
}
}。