2013-02-14 126 views
0
void insert(struct EMP* emp[]) 
{ 
    struct EMP* previous = NULL; 
    struct EMP* current = top; 

    int i; 
    int j; 

    previous = current; 
    current = current -> next; 

    for(i = 1; i < numEmps; i++) 
    { 
     j = i; 
     while(j > 0 && previous -> id > current -> id) 
     { 
      previous = current; 
      j--; 
     } 

     current = current -> next; 
    } 
} 

因此,该参数是一个无序的数组,我想用一个插入排序来订购吧。我遇到的问题是它需要链接列表。有什么建议么?上面是我现有的插入排序功能,不起作用。Ç - 插入排序用链表与无序排列

+4

当然,它不起作用,当它仍然是NULL时使用'previous'。 – 2013-02-14 08:12:05

+0

我认为previous = current = top所以没有问题。 – Elemental 2013-02-14 08:47:44

+0

我在前面等于当前的地方添加了,然后当前等于下一个....它构建并运行,但没有任何更改。有任何想法吗? – 2013-02-14 08:49:54

回答

0

我认为你需要仔细看看插入排序算法。本质上,它需要一个新的目标列表来添加元素(特别是在构建第二个列表时,将元素插入正确的位置)。所以,误解的核心是这个想法可以在一个列表上“就地”完成。

将第二个列表作为链接列表实现会更加容易,因为您需要能够将元素有效地插入列表中的任意点。