#include <stdio.h>
#include <stdlib.h>
typedef struct node_t
{
int num;
struct node_t *next;
} NODE;
void listNode(NODE *node,int num)
{
NODE *ptr=node;
if (!node) return;
while (ptr->next) ptr=ptr->next;
if (ptr->next = (NODE *)calloc(sizeof(NODE),1))
ptr->next->num=num;
}
void deleteNode(NODE *node)
{
if (node)
{
deleteNode(node->next);
free(node);
}
}
int Sort(NODE *node)
{
NODE *tmp;
if (node->next && node->next->next)
{
if (node->next->num > node->next->next->num)
{
tmp = node->next;
node->next = node->next->next;
tmp->next = node->next->next;
node->next->next = tmp;
return 1;
}
else return Sort(node->next);
}
else return 0;
}
int main()
{
int num;
NODE root ={0,}, *ptr;
do
{ printf("input number:");
scanf("%d",&num);
if (num)
{ listNode(&root,num);
while (Sort(&root));
for (ptr=root.next; ptr; ptr=ptr->next)
printf("->%d",ptr->num);
printf("\n");
}
} while (num);
deleteNode(root.next);
}
我該如何改成更有效率的排序?
排序程式的部份 我該怎麼改...
