#define MAX_SIZE 100
typedef struct LNode {
int data;
struct LNode *next;
}LNode, *LinkList;
void createLinkList(LinkList &L) {
int data;
scanf("%d", &data);
if (data == 0) {
L = NULL;
return;
}
else {
L = (LinkList)malloc(sizeof(LNode));
L->data = data;
L->next = NULL;
createLinkList(L->next);
return;
}
}
//选择排序
void arrayselectsort(int A[], int n) {
for (int i = 0;i < n - 1;i++) {
int min= i;
for (int j = i + 1;j < n;j++) {
if (A[j] < A[min])min = j;
}
if (min != i) {
int temp = A[min];
A[min] = A[i];
A[i] = temp;
}
}
}
LinkList getminpre(LinkList L) {
LinkList minpre, min, pre, cur;
minpre = NULL;
min = L;
pre = L;
cur = L->next;
while (cur) {
if (cur->data < min->data) {
minpre = pre;
min = cur;
}
pre = cur;
cur = cur->next;
}
return minpre;
}
void linklistselectsort(LinkList L) {
LinkList tail, cur, minpre, min;
tail = NULL;
minpre = NULL;
min = NULL;
cur = L;
while (cur) {
min = cur;
minpre = getminpre(cur);
if (minpre) {
min = minpre->next;
minpre->next = min->next;
}
cur = cur == min ? cur->next : cur;
if (tail == NULL) {
L->next = min;
}
else {
tail->next = min;
}
tail = min;
}
}
//快速排
用链表和数组实现各种排序算法(C语言)
最新推荐文章于 2024-05-15 16:20:58 发布