单链表排序(冒泡法)
来源:互联网 发布:男朋友活好体验 知乎 编辑:程序博客网 时间:2024/06/10 17:17
通用冒泡法排序
//1.0单链表排序升序(冒泡排序)void BubbleSortLinkList(LinkList L){ LinkList Tail = NULL; int flag = 0; if (L->next == NULL || L == NULL){ return; } while (L!=Tail) { LinkList Pre = L; LinkList Cur = Pre->next; while (Cur != Tail) { if (Pre->data>Cur->data) { DataType tmp = Pre->data; Pre->data = Cur->data; Cur->data = tmp; flag = 1; } Pre = Cur; Cur = Cur->next; } Tail = Pre; if (flag == 0) return; }}//test.c#define _CRT_SECURE_NO_WARNINGS 1typedef int DataType;#define NULL 0#include<stdio.h>#include<windows.h>#include<assert.h>typedef struct Node{ DataType data; struct Node*next;}Node, *LinkList;void InitList(LinkList *L){ *L = (Node*)malloc(sizeof(Node)); if (*L == NULL){ printf("申请内存空间失败"); } (*L)->next = NULL; (*L)->data = 1;}LinkList BuyNode(DataType data){ LinkList NewNode = NULL; NewNode = (LinkList)malloc(sizeof(Node)); if (NewNode == NULL){ printf("为节点创建空间失败"); } NewNode->data = data; NewNode->next = NULL; return NewNode;}void PrintList(LinkList L){ LinkList Cur = L; if (L == NULL){ printf("NULL"); } while (Cur) { printf("%d--->", Cur->data); Cur = Cur->next; } printf("NULL\n");}void PushBack(LinkList* L, DataType data){ assert(L); LinkList Cur = *L; if (Cur == NULL){ Cur = BuyNode(data); } while (Cur->next) { Cur = Cur->next; } Cur->next = BuyNode(data);}void PushFront(LinkList* L, DataType data){ assert(L); LinkList Cur = *L; if (Cur == NULL){ *L = BuyNode(data); } *L = BuyNode(data); (*L)->next = Cur;}void PopBack(LinkList*L){ LinkList Cur = *L; LinkList Pre = NULL; assert(L); if (Cur->next == NULL || Cur == NULL) return; while (Cur->next){ Pre = Cur; Cur = Cur->next; } free(Pre->next); Pre->next = NULL;}void PopFront(LinkList* L){ LinkList Cur = *L; assert(L); if (Cur->next == NULL || Cur == NULL) return; *L = (*L)->next; free(Cur);}//1.0单链表排序升序(冒泡排序)void BubbleSortLinkList(LinkList L){ LinkList Tail = NULL; int flag = 0; if (L->next == NULL || L == NULL){ return; } while (L!=Tail) { LinkList Pre = L; LinkList Cur = Pre->next; while (Cur != Tail) { if (Pre->data>Cur->data) { DataType tmp = Pre->data; Pre->data = Cur->data; Cur->data = tmp; flag = 1; } Pre = Cur; Cur = Cur->next; } Tail = Pre; if (flag == 0) return; }}void test1(){ LinkList M = NULL; InitList(&M); //PushFront(&M, 0); PushBack(&M, 3); PushBack(&M, 2); /*PushBack(&M, 5); PushBack(&M, 4);*/ ///*PopBack(&M); //PopFront(&M); //Erase(&M, Find(&M,3)); //Insert(Find(&M,0), 3); //printf("%d\n",Size(M)); // BubbleSortLinkList(M); PrintList(M);}int main(){ test1(); system("pause"); return 0;}
阅读全文
0 0
- 单链表排序(冒泡法)
- 单链表排序(冒泡排序法)
- 单链表排序--冒泡法
- 排序(冒泡法)
- 单链表冒泡法从小到大排序
- 冒泡排序(单链表实现)
- 单链表冒泡排序(优化)
- 冒泡法排序(C#)
- 冒泡法排序(C++)
- 冒泡法排序(指针)
- 冒泡法排序(汇编语言)
- 冒泡排序法(Java)
- 排序 - 冒泡法(改进)
- 单链表排序(冒泡排序)
- 排序算法(2)冒泡排序法
- 字符串排序(冒泡排序法模拟)
- 【排序】冒泡排序法
- 单链表冒泡排序与数组冒泡排序
- mysql key_len各种字段类型计算公式
- poj 3692(浅谈二分图最大匹配求最大独立集在解决最大团问题中的应用)
- go get -insecure 修改URL(uses insecure protocol)
- RxJava(RxAndroid)基本使用入门
- Mysql-常用命令
- 单链表排序(冒泡法)
- 微信小程序开发(1)---配置
- javaDBUtils和连接池(连接池)
- BI EE 安装补丁
- GDI+图像去污——四周去污
- 【27】你以为border-radius只是圆角吗【各种角度】
- Android可伸缩布局-FlexboxLayout(支持RecyclerView集成)
- 3:十进制数转二进制数(类似大整数除法)
- 整理面试相关