繁体   English   中英

如何将这个快速排序代码更改为我想要的3个不同部分?

[英]how can I change this quicksort code into 3 different parts that I want to?

对于我的任务,我的代码必须具有3个源文件:

main.c(处理输入和输出以及顶级程序逻辑。)node.h(声明数据结构和功能quicksort,该函数对给定的双向链表以升序进行排序)和printlist,其打印出链接列表到屏幕。 node.c(定义函数quicksort和printlist,如在node.h中声明的那样。)

main函数必须使用scanf函数调用从keybord读取输入数据(请注意,输入重定向可用于直接从数据文件读取数据)。 数据数量(在数据文件中)是不确定的。

这是我的老师给我的代码。 我真的很困惑,我需要将代码分为三部分吗?

#include<stdio.h>
void qsort(int a[10], int first, int last);
int main() {

    int i, n, a[10], j, pivot, last, t;
    printf("enter the no of elements\n");
    scanf("%d", &n);
    printf("enter the elements\n");
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    qsort(a, 0, n - 1);
    printf("sorted elements is\n");
    for (i = 0; i < n; i++)
        printf("\n%d", a[i]);

}

void qsort(int a[10], int first, int last) {
    int i, j, t, pivot, n;
    if (first < last) {
        i = first;
        j = last;
        pivot = first;
        while (i < j) {
            while (a[i] <= a[pivot] && i < last)
                i++;
            while (a[j] > a[pivot])
                j--;
            if (i < j) {
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }

        t = a[pivot];
        a[pivot] = a[j];
        a[j] = t;
        qsort(a, first, j - 1);
        qsort(a, j + 1, last);
    }
}

尽管您的讲师给您提供了对数组进行排序的qsort,但她希望您在链接列表上实现它。 也许这只是quicksort如何工作的一个示例?

无论如何,您可能需要将该main复制到main.c文件中。 该文件将需要包含node.h。 在其中,您将声明列表结构,创建它们的方法,快速排序以及在屏幕上打印列表的函数。 在node.c内,您将实现在node.h上声明的所有内容。

您应该仅将定义的qsort用作参考,并且可能需要对main进行更改,以便它创建您编码的列表而不是数组。

这就是我对您的作业的看法,但是您可能应该与您的老师一起清理一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM