#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. Что заставляет вас думать, что публикация вашего кода приведет к удалению вопроса? Больше шансов быть удаленным, если вы этого не сделаете!