Заполнить массив указателей вложенной структуры - C (СИ)
Формулировка задачи:
Есть две структуры для двоичного дерева поиска
Есть функция которая добавляет в узел название магазина и цену, для одного узла может быть несколько, названий и цен
подскажите как это реализовать
Конкретно одно название магазина и цену я могу добавить
а вот несколько? и Потом их удалить ?
Листинг программы
- typedef struct _price {
- double price;
- char* shopname;
- } pricing;
- typedef struct _bstnode {
- int id;
- pricing** pl;
- int nr_of_prices;
- struct _bstnode *left;
- struct _bstnode *right;
- struct _bstnode *parent;
- } bstnode;
Листинг программы
- void updatePrice(bstnode* root, int id, char* shop, double price){
- //to do
- }
Листинг программы
- (*(root->pl))=malloc(sizeof (pricing));
- (*(root->pl))->price=price;
- (*(root->pl))->shopname=shop;
Решение задачи: «Заполнить массив указателей вложенной структуры»
textual
Листинг программы
- typedef
- struct _str{ char ch; }str;
- typedef
- struct _nstr
- {
- str **ptr;
- int ns;
- }nstr;
- void main(int argc,char* argv[])
- {
- int i,n;
- nstr *a;
- a=malloc(sizeof(nstr));
- a->ptr=NULL;
- a->ns=0;
- srand((unsigned)time(0));
- n=1+rand()%10;
- for(i=0; i<n; i++)
- {
- a->ptr=realloc(a->ptr,sizeof(str*)*++a->ns);
- a->ptr[i]=malloc(sizeof(str));
- a->ptr[i]->ch='A'+rand()%26;
- }
- for(i=0; i<a->ns; i++) printf("%c\n",a->ptr[i]->ch);
- for(i=0; i<a->ns; i++) free(a->ptr[i]);
- free(a->ptr);
- free(a);
Объяснение кода листинга программы
В этом коде создается динамический массив указателей на структуры str
.
- Создается структура
nstr
с указателем на массив структурstr
и переменной для хранения количества элементов. - Инициализируется указатель
a
на структуруnstr
с помощьюmalloc
. - Указатель
a->ptr
инициализируется какNULL
. - Генерируется случайное количество элементов массива с помощью
rand()
. - В цикле
for
создается каждый элемент массива с помощьюmalloc
. - Каждый элемент массива присваивается случайная буква с помощью
rand()
. - Выводится каждый элемент массива с помощью
printf
. - В цикле
for
освобождаются все выделенные элементы массива с помощьюfree
. - Освобождается указатель на массив структур
str
с помощьюfree
. - Освобождается указатель на структуру
nstr
с помощьюfree
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д