#include<stdio.h>
#pragma once
//单向链表
//双向链表
//
typedef char LinkNodeType;
typedef struct LinkNode {
LinkNodeType data;
struct LinkNode* next;
//next = NULL 结束标志 不带环
//next = 第一个节点位置 带环
//
//带头结点
//不带头节点
} LinkNode;
#include<stdio.h>
#include"seqlink.h"
#include<stdlib.h>
void LinkListBubbleSort(LinkNode* head)
{
if(head == NULL)
{
//空链表
return;
}
LinkNode* cur = head;
LinkNode* pre = NULL;
while(cur != pre)
{
while(cur->next != pre)
{
if(cur->data > cur->next->data)
{
LinkNodeType tmp = cur->data;
cur->data = cur->next->data;
cur->next->data = tmp;
}
cur = cur->next;
}
pre = cur;
}
cur = head;
}
void TestSort()
{
LinkNode* head;
LinkListInit(&head);
LinkListPushBack(&head,'a');
LinkListPushBack(&head,'c');
LinkListPushBack(&head,'d');
LinkListPushBack(&head,'b');
LinkListBubbleSort(head);
LinkListPrintChar(head,"冒泡排序");
}
int main()
{
TestSort();
return 0;
}