Тема: рекурсивне сортування quicksort
Привіт всім ,стикнувся з пробемою некоректного сортування і відображення .Може хтось допомогти розібратись з проблемою?
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
typedef struct slovechka
{
    char words[25];
    
}SV;
SV* list = (SV*)malloc(1000 * sizeof(SV));
int max;
void number(void);
void slova(void);
void print(void);
void Sort();
void quicksort(char[], int, int, int);
int main()
{
    
    system("chcp 1251");
    system("cls");
    system("color F0");
    number();
    slova();
    print();
    quicksort(list->words, max, 0, max - 1);
    print();
    Sort();
    print();
    
    
    
    
    return 0;
    
    free(list);
    system("pause");
    return 0;
}
void number(void)
{
    printf("Введіть кількість слів: ");
    scanf_s("%ld", &max);
}
void slova(void)
{
    getchar();
    puts("\tВведіть дані");
    for (int i = 0; i < max; i++)
    {
        printf("слово %d: ",i+1);
        scanf("%s", &list[i].words);
        getchar();
    }
    getchar();
}
void print(void)
{
    printf("----------------------------------------------\n");
    slovechka* point;
    int i;
    for (i = 0, point = list; i < max; i++, point++)
    {
        printf("|%-3d|%-20s|\n", i + 1, point->words);    
    }
    printf("----------------------------------------------\n");
}
int cmp(const void* a, const void* b) 
{
    return *(int*)a - *(int*)b;
}
void Sort(void)
{
    qsort(list->words,max,sizeof(slovechka), (int (*)(const void*, const  void*)) strcmp);
}
void quicksort(char h[], int size, int left, int right)
{
    int i = left;
    int j = right;
    char pivot = h[(left + right) / 2];
    char temp;
    while (i <= j)
    {
        while (h[i] < pivot) i++;
        while (h[j] > pivot) j--;
        if (i <= j)
        {
            temp = h[i];
            h[i] = h[j];
            h[j] = temp;
            i++;
            j--;
        }
    }
    if (i < right)
        quicksort(h, size, i, right);
    if (j > left)
        quicksort(h, size, left, j);
}


