使用C中的快速排序对链接列表进行排序

时间:2014-03-04 09:44:09

标签: c linked-list quicksort

我正在使用linux并尝试在C中编写程序,以便使用快速排序对链接列表元素进行排序。这是我的代码。

struct node {
    int data;
    struct node *link;
    struct node *plink;
};

struct node *first=NULL, *last=NULL;

void swap(struct node* a, struct node* b) {
    int temp;
    temp = a->data;
    a->data = b->data;
    b->data = temp;
}

void qsort(struct node *low, struct node *high) {
    if(low==NULL || high==NULL || low == high || low->plink == high)
        return ;

    struct node *pivot=low, *tmp=low->link;

    while(tmp != high->link) {
        if(tmp->data < low->data) {
            swap(pivot->link, tmp);
            pivot = pivot->link;
        }
        tmp = tmp->link;
    }

    swap(low, pivot);
    qsort(low, pivot->plink);
    qsort(pivot->link, high);
}

它适用于小文本文件但不适用于1.7M的文件。请告诉我需要添加的内容。

提前致谢。

0 个答案:

没有答案