использование общего списка - PullRequest
0 голосов
/ 20 декабря 2010
struct node 
{ 
    void *data; 
    struct node *link;    
}; 

Учитывая такую ​​структуру, мы называем ее общим родственным списком. Каково использование такого списка с точки зрения его применения в реальном времени.

Ответы [ 3 ]

2 голосов
/ 20 декабря 2010

Эта универсальность позволяет вам создать некоторый (проверенный и надежный) библиотечный код вокруг него, который затем может быть использован повторно.

Конечно, это не типобезопасно, поэтому C ++ ввел (среди прочего) универсальные классы шаблонов.

Что касается использования связанного списка как такового: вы используете его там, где хотитехранить и извлекать переменное количество похожих объектов.Как правило, вы заранее не знаете количество объектов и можете получить их в том порядке, в котором вы их сохранили.Также достаточно эффективно удалить объект из связанного списка (если у вас есть указатель на его запись в списке).

1 голос
/ 20 декабря 2010

У вас есть служба, которая принимает запросы от нескольких приложений и обеспечивает обработку каждого из них.Служба может поддерживать контексты для каждого запроса в связанном списке, и когда это будет выполнено, они будут удалять узел из списка.Пустой связанный список в этом случае будет означать, что ни одно приложение не зарегистрировано в службе.

Например, рассмотрим службу, построенную на стеке SIP и нескольких приложениях, таких как IM , Информация о присутствии может зарегистрироваться в службе, которая использует стек SIP для сигнализации.Теперь служба поддерживает данные, относящиеся к каждому приложению, в связанном списке (что опять-таки является вопросом разработки, но давайте предположим, что у нас есть ограничение на обслуживание 5 приложений).Ответ SIP должен быть перенаправлен в приложение, отправляющее запрос, и сказать, что вы удерживаете указатель обратного вызова как одно значение узла, его просто вызвать, как только вы найдете соответствующий узел для ответа.

Каждый узелсохраняет много информации о каждом приложении и использует ее для отправки ответа на приложение.

Возможно, вы захотите взглянуть на this .

1 голос
/ 20 декабря 2010

что такое использование такого списка с точки зрения его применения в реальном времени

Если все, что у вас есть, это определение и указатель на заголовок списка, то он хорош только для создания произвольного стека объектов. Это связано с тем, что для выполнения чего-либо, кроме добавления или удаления объекта в начало списка, необходимо выполнить итерацию по нему. Даже с такой ограниченной «эффективностью» такой список имеет свое применение, например, в качестве кэша для неиспользуемых объектов кучи, которые вы собираетесь перерабатывать, чтобы избежать malloc.

Если у вас также есть указатель на конец списка, вы можете добавить объекты в любой конец за O (1). Это означает, что вы можете использовать его как очередь.

Если у каждого элемента есть указатель на его предшественника и преемника, вы также можете вставить / удалить элементы из любой точки списка за O (1) раз. Конечно, вам все еще нужно найти объект, который может включать линейное сканирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...