C语言动态链表的排序(从小到大) 2021.07.14
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C语言动态链表的排序(从小到大) 2021.07.14,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2250字,纯文字阅读大概需要4分钟。
内容图文
![C语言动态链表的排序(从小到大) 2021.07.14](/upload/InfoBanner/zyjiaocheng/1172/789ea6c19c52416a83394e47237285c5.jpg)
// 现在的主要问题是,排序的列表中不能出现0,原因是与NULL冲突。 #include <stdio.h> #include <stdlib.h> #define MAX 999999 typedef struct LNode//重命名struct LNode为LNode { int data; LNode* next;//在结构体中可以直接使用新名字LNode }LNode; void CreateLinklist(LNode*& head) { printf("请输入数字创建链表,以9999结束。\n"); head = (LNode*)malloc(sizeof(LNode)); head->next = nullptr; LNode* flag; flag = head; int t; scanf_s("%d", &t); while (t != 9999) { flag->data = t; flag->next = (LNode*)malloc(sizeof(LNode)); flag = flag->next; scanf_s("%d", &t); } flag->next = nullptr; flag = head; } void printLinklist(LNode* p) { if (p->data == NULL) printf("链表为空。\n"); else { printf("链表的结构为:\n"); while (p->next != nullptr) { printf("%d", p->data); p = p->next; if (p->next != nullptr) printf(" -> "); } } } void CopyLinklist(LNode*& head, LNode* b) { head = (LNode*)malloc(sizeof(LNode)); head->next = nullptr; LNode* flag; flag = head; while (b->next != nullptr) { flag->data = b->data; flag->next = (LNode*)malloc(sizeof(LNode)); flag = flag->next; b = b->next; } flag->next = nullptr; flag = head; } void sort(LNode*& headA, LNode* p) { LNode* copy; CopyLinklist(copy, p); headA = (LNode*)malloc(sizeof(LNode)); headA->next = nullptr; LNode* flagA; LNode* flagB; LNode* flagC; flagA = headA; flagB = copy; flagC = copy; int g; int num = 0; while (copy->next != nullptr) { copy = copy->next; num++; } printf("该排序链表共有%d个结点。\n", num); copy = flagB; g = copy->data; if (num == 0) printf("该排序链表为空!"); else { while (num > 0) { while (copy->next != nullptr) { if (g > copy->data && copy->data != NULL) { g = copy->data; flagC = copy; } copy = copy->next; } flagC->data = MAX;//将当前最小值设为一个原链表绝对不可能达到的极大值 flagA->data = g; flagA->next = (LNode*)malloc(sizeof(LNode)); flagA = flagA->next; flagA->next = nullptr; copy = flagB; g = MAX; num--; } flagA = headA; } } int main() { LNode* LA; CreateLinklist(LA); printf("\n"); printLinklist(LA); printf("\n"); printf("\n"); LNode* LB; sort(LB , LA); printf("\n"); printLinklist(LB); printf("\n"); printLinklist(LA); return0; }
现在的主要问题是,排序的列表中不能出现0,原因是与NULL冲突。
原文:https://www.cnblogs.com/XueQun/p/15011260.html
内容总结
以上是互联网集市为您收集整理的C语言动态链表的排序(从小到大) 2021.07.14全部内容,希望文章能够帮你解决C语言动态链表的排序(从小到大) 2021.07.14所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。