查看單個文章
舊 2010-07-21, 04:40 PM   #1
h4772995
註冊會員
榮譽勳章

勳章總數0
UID - 341131
在線等級: 級別:0 | 在線時長:0小時 | 升級還需:5小時
註冊日期: 2010-07-19
文章: 2
精華: 0
現金: 2 金幣
資產: 2 金幣
預設 C語言數字排序問題

#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);
}

我該如何改成更有效率的排序?
排序程式的部份 我該怎麼改...
h4772995 目前離線  
送花文章: 0, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖