Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Операции со списками при связном хранении
При простом связанном хранении каждый элемент списка представляет собой структуру nd, состоящую из двух элементов: val - предназначен для хранения элемента списка, n - для указателя на структуру, содержащую следующий элемент списка. На первый элемент списка указывает указатель dl. Для всех операций над списком используется описание: typedef struct nd { float val; struct nd * n; } ND; int i, j; ND * dl, * r, * p; Для реализации операций могут использоваться следующие фрагменты программ: 1) печать значения i-го элемента r=dl; j=1; while(r! =NULL & & j++n; if (r==NULL) printf(" \n нет узла %d ", i); else printf(" \n элемент %d равен %f ", i, r-> val); 2) печать обоих соседей узла(элемента), определяемого указателем p (см. рис.3) if((r=p-> n)==NULL) printf(" \n нет соседа справа"); else printf(" \n сосед справа %f", r-> val); if(dl==p) printf(" \n нет соседа слева"); else { r=dl; while(r-> n! =p) r=r-> n; printf(" \n левый сосед %f", r-> val); } 3) удаление элемента, следующего за узлом, на который указывает р (см. рис.4) if ((r=p-> n)==NULL) printf(" \n нет следующего"); p-> n=r-> n; free(r-> n); 4) вставка нового узла со значением new за элементом, определенным указателем р (см. рис.5)
r=malloc(1, sizeof(ND)); r-> n=p-> n; r-> val=new; p-> n=r; 5) частичное упорядочение списка в последовательность значений, s+t+1=l, так что K1'=K1; после упорядочения указатель v указывает на элемент K1' (см. рис.6)
Количество действий, требуемых для выполнения указанных операций над списком в связанном хранении, оценивается соотношениями: для операций 1 и 2 - Q=l; для операций 3 и 4 - Q=1; для операции 5 - Q=l.
|