冒泡排序的优点在于容易使用,结构清晰
type* create(int n) {
int i;
type *head, *tail, *p1;
head = tail = p1 = NULL;
for (i = 0; i < n; i++) {
p1 = (type*)malloc(sizeof(type));
if (i == 0)
head = tail = p1;
else {
tail->next = p1;
tail = p1;
}
}
tail->next = NULL;
return head;
}//创建链表
void save(int n, type *head) {
int i;
type *p;
p = head;
for (i = 0; i < n; i++) {
scanf("%d", &p->data);
p = p->next;
}
return;
}//储存数据
void swap(type *p, type *p_next) {
int temp;
temp = p->data;
p->data = p->next->data;
p->next->data = temp;
}//交换数据
void buddlesort(int n, type *head) {
type *p;
int i, j;
for(i=0;i<n-1;i++)
for (p=head,j=0;j<n-i-1; p = p->next,j++) {
if (p->data > p->next->data){
swap(p, p->next);//交换两者之间的数据
}
}
p = head;
for (i = 0; i < n; i++)
{
printf("%d\t", p->data);
p = p->next;
}
return;
}//冒泡排序
void main() {
type *pstu;
int n;
printf("请输入想要创建的节点个数:\n");
scanf("%d", &n);
pstu = create(n);
save(n, pstu);
buddlesort(n, pstu);
return;
}//主程序