#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define SIZE 25000
//构建链表
struct node {
int number;
node* next;
};
//创建排序函数(选择排序法)
//找出最小元素向前移动
int* sort(int num[],int n){
int i=0,j=0;//每次循环次数减1,用j储存
int k;//储存最小元素的地址
int temp;
for(i=0;i<n;i++){
k=i;
for(j=i;j<n;j++){
if(num[j]<num[k]){
k=j;
}
}
temp=num[i];
num[i]=num[k];
num[k]=temp;
}
return num;
}
//创建链表头插法
//分配空间应按房间号(地址)分配
node* creat(int so[],int len){
int i;
node *p, *pre, *head;
head = (node*)malloc(sizeof(node));
head->next = NULL;
pre = head;
for(i=0; i<len; i++){
p = (node*)malloc(sizeof(node));
p->number=so[i];
p->next=NULL;
pre->next=p;
pre=p;
}
return head->next;
}
//主函数
int main () {
int* num = (int*)malloc(SIZE*sizeof(int));//指明需要分配的内存空间,否则可能会分配不足
int i=0;
int X;
while(scanf("%d",&X)){
if(X==0) break;
else{
num[i]=X;
i++;
}
}
int* so=sort(num,i);
node* L=creat(so,i);
//L=L->next;
while(L!=NULL){
printf("%d ",L->number);
L=L->next;
}
free(num);
free(L);
return 0;
}
数据结构学习记录——链表+选择排序法
最新推荐文章于 2024-10-04 18:59:43 发布