Заполнить массив указателей вложенной структуры - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д