#include <stdio.h>
#include <stdlib.h>
/*
实现排序的方式:
1.冒泡排序
2.指针排序
由于冒泡排序需要的时间过长,此处为选择排序
*/
typedef struct LNode {
int data;
LNode* next;
}*LinkList;
//初始化链表
bool InitLinkList(LNode*& L) {
L = (LinkList)malloc(sizeof(LNode));
if (L == NULL) return false;
L->next = NULL;
return true;
}
//尾插操作实现
LinkList CreateLinkList(LinkList L, int data[], int length) {
LNode* p, * s;
s = L;
for (int i = 0; i < length; i++)
{
p = (LNode*)malloc(sizeof(LNode));
if (p != NULL) {
p->data = data[i];
p->next = NULL;
s->next = p;
s = p;
}
}
return L;
}
//给链表排序
void SortList(LinkList L) {
LNode* i=L->next, * j,*min;
int temp=0,jdata=0;
while (i->next!= NULL) {
min = i;
j = i->next;
while (j!=NULL)
{
if (min->data>j->data)
{
min = j;
jdata = j->data;
}
j = j->next;
}
temp = i->data;
i->data = min->data;
min->data = temp;
i = i->next;
}
}
//输出链表函数
void PrintLinkList(LinkList L) {
LNode* p;
p = L->next;
while (p != NULL)
{
printf("%d\t", p->data);
p = p->next;
}
}
int main() {
LNode* L;
InitLinkList(L);
int data[7] = { 2,14,6,28,12,15,18 };
CreateLinkList(L, data, 7);
//排序
SortList(L);
PrintLinkList(L);
}