代码:
#include <stdio.h>
#include <malloc.h>
//对单链表使用冒泡排序
typedef struct node{
int data;
struct node *next;
int sort_flag;//标志链表中当前结点是否被排过序
}Node, *Linklist;
#define sorted 1
#define unsorted 0
//打印并销毁一个链表
void print_Linklist(Linklist h)
{
if(h == NULL){
return;
}
Linklist pre = h;
Linklist next = h->next;
while(next){
printf("%d\n",next->data);
free(pre);
pre = next;
next = next->next;
}
free(pre);
}
// 单链表的冒泡排序:前后两个结点的值交换,非指针操作
void bubble_sort(Linklist h)
{
if(h->next==NULL && h->next->next==NULL){
return;
}
Linklist pre = h->next;
Linklist next = h->next->next;
int num = 2;
while(next){//第一次冒泡排序,并确定元素个数num
++num;
if(pre->data > next->data){//值交换,