Двойные списки в C

#c #list

#c #Список

Вопрос:

Я хочу найти 5 самых дешевых товаров из всех магазинов с помощью O(n m) ( n = длина узла каждого магазина, m = доступные товары). Я разобрался с алгоритмом в своей голове, но я не могу перевести на C. Я опубликую файл заголовка с struct s. Вот что я хочу сделать:

Для каждого магазина отсортируйте его товары по цене, а затем создайте другой список товаров с 5 самыми дешевыми товарами в каждом магазине, а затем sort() со всеми ними и распечатайте первые 5.

 struct Shop {
    int sid;
    int type;
    struct Product *products;
    struct Shop *next;
    struct Shop *prev;
};

struct Product {
    int pid;
    int quantity;
    int price;
    struct Product *next;
};
/* Global, pointer to the header node of the circular, double-linked list of shops */
struct Shop *H;

/* Global, array of pointers for the use in event 'Find Cheapest Products' */
struct Product *CheapestProducts[5];
  

РЕДАКТИРОВАТЬ: он просто добавляет продукты в newProd (например, список TMP)
и печатает продукты, количество и цену для каждого магазина. отсортированы по цене.

  struct Shop *shop=H;
    struct Product *prod;
    struct Product *newProd;
    int count=0;;
    if(shop==NULL) return 0;
    while(shop->next!=NULL)
    {
            prod=shop->products;
            //newProd=prod;
            sortPrice(prod);
            while(prod!=NULL)
            {
                    newProd=prod;
                     printf("<%d:%d:%d>t" ,newProd->pid,newProd->quantity,newProd->price);

                    //newProd=prod;
                    newProd=newProd->next;
                    prod=prod->next;
                    //sortPrice(newProd);
                    //sortPrice(newProd);
                    // printf("<%d:%d:%d>t" ,newProd->pid,newProd->quantity,newProd->price);

            }
            printf("n");
            //printf("<%d:%d:%d>t" ,newProd->pid,newProd->quantity,newProd->price);
            shop=shop->next;
    }
  

Комментарии:

1. О чем именно вы спрашиваете?

2. Как перевести мой алгоритм на C. Я могу показать свой код

3. да, покажите, что вы уже пробовали

4. Что заставляет вас думать, что публикация вашего кода приведет к удалению вопроса? Больше шансов быть удаленным, если вы этого не сделаете!