Как задать возможность обработки файла определенного типа некоторой программой

Разработчики приложений для Windows 8 часто спрашивают, может ли одно приложение запускать другое. Ответ на этот вопрос положителен, с некоторыми ограничениями (не удивлены ли вы!). Во-первых, приложения можно запускать только посредством сопоставления типа файла или схемы URI , а не напрямую по названию или через исполняемый файл . Говоря точнее, единственный способ, которым может воспользоваться Windows 8 для того, чтобы запустить другое приложение – это касается и классических приложений – это воспользоваться API Windows . System .Launcher (http://msdn.microsoft.com/library/windows/apps/windows.system.launcher.aspx ), которое представляет две возможности:

  • launchFileAsync – запускает другое приложение, связанное с заданным объектом StorageFile . Необязательный объект LauncherOptions позволяет задавать некоторые подробности (смотрите ниже)
  • launchUriAsync – запускает другое приложение, связанное с заданной схемой URI, снова, с объектом LauncherOptions или без него.

Примечание. И для launchFileAsync , и для launchUriAsync справедливо то, что Windows 8 намеренно блокирует приложения от открытия любого файла или схемы URI , которые обрабатываются системным компонентом. Сценарий , при котором приложение Windows 8 участвует в подобной обработке, недопустим. Материалы «Обработка активации файла» (http://msdn.microsoft.com/library/windows/apps/hh452684.aspx» ) и «Обработка активации протокола» (http://msdn.microsoft.com/library/windows/apps/hh452686.aspx ) содержат список специальных типов файлов и схем URI , о которых идет речь. Схема URI file:// допустима в launchUriAsync , но только для URI , которые принадлежат локальной сети, и тогда, когда в манифесте приложения объявлена возможность Частные сети (клиент и сервер ) ( Private Networks ( Client Запуск приложения для сопоставленных типов файлов и протоколов» ( http://code.msdn.microsoft.com/windowsapps/Association-Launching-535d2cec), предоставляют демонстрацию ипользования этих методов с некоторыми из опций, таким образом, вы сможете увидеть их действие. С другой стороны, как показано в Сценариях 2 и 3 того же примера, это вопрос о том, как приложение связывает себя с типом файла или схемой URI для того, чтобы оно могло быть запущено подобным образом. Эти сопоставления составляют контракт Активация файла (File Activation) и контракт Активация протокола ( Protocol activation). В обоих случаях целевое приложение должно объявить о типе файла и/или схеме URI , которые оно намеревается обслуживать, в манифесте, и затем должно предоставить способы активации для этих целей, как мы увидим в следующем разделе.

Как исправить ассоциации исполняемых файлов в Windows 7

Опять же, сопоставление файла или схемы URI – это единственное средство, с помощью которого приложение Windows 8 может запустить другое приложение , таким образом, нет гарантии, что вы действительно запустите конкретное приложение . Конечно, чем уникальнее и специфичнее тип файла или схема URI , тем менее вероятно, что у пользователя будет несколько приложений для обработки подобного сопоставления, или даже то, что несколько подобных приложений будут присутствовать в Магазине Windows . На самом деле, разработка уникального интерфейса схемы URI , где схема вполне очевидно специфична для приложения, действительно лучший способ для того, чтобы запущенное Windows 8- приложение могло передавать другому выполнение задачи, так как посредством строки URI можно передать любые данные. Приложение Maps (Карты) в Windows 8, например, поддерживает схему bingmaps для выполнения задач, связанных с картами, поступающих от других приложений. Вы можете представить то же самое для биржевого приложения, для календаря, почтового клиента (помимо mailto ) и так далее. Если вы создаете подобную схему и хотите, чтобы другие приложения могли ей пользоваться, вам, конечно, нужно представить документацию с подробностями ее использования, что подразумевает, что другие приложения могут реализовать ту же самую схему, и, таким образом, представлять собой альтернативу в Магазине Windows . Таким образом, нет гарантии, даже с весьма специфической схемой, что вы можете быть уверены в том, что запустите другое известное приложение , но это все, что можно получить от данной возможности .

Урок #23. Программы и компоненты Windows 7

Обработка активации файла

Для того, чтобы добавить в приложение возможность обрабатывать файлы, для начала пройдите в раздел Объявления (Declaration) редактора манифеста и добавьте Сопоставление типов файлов (File Type Associations), интерфейс Visual Studio для выполнения данной задачи показан на рис. 2.5. У каждого типа файла может быть множество конкретных обозначений (обратите внимание на кнопку Добавить (Add new) ниже раздела Поддерживаемый типы файлов (Supported File Types), например, у файлов формата JPEG могут быть расширения .jpg и .jpeg. Обратите внимание на то, что обработка файлов некоторых типов запрещена для приложений, смотрите их полный список в материале «Обработка активации файла» (http://msdn.microsoft.com/library/windows/apps/hh452684.aspx ).

В группе Свойства (Properties), Отображаемое имя (Display name) – это общее имя для группы типов файлов (это не обязательный параметр; он не нужен, если речь идет лишь об одном типе файла). Параметр Имя (Name), с другой стороны, необходим – это внутренний идентификатор для группы файла, и то, что должно оставаться неизменным в течение всего времени существования приложения, не меняться при обновлениях. В некотором смысле, свойства Имя/Отображаемое имя для группы файлов напоминают настоящее имя, а отдельные типы файлов напоминают псевдонимы – любой из них, в конечном счете, относится к сущности типа файла и к вашему приложению.

Подсказка (Info Tip) – это текст всплывающей подсказки, которая появляется, когда пользователь наводит указатель на файл данного типа и приложение является основным приложением для обработки этого типа файлов. Параметр Значок (Logo) имеет некоторые особенности. Здесь, в Visual Studio, вы просто ссылаетесь на базовое имя для файла изображение, как обычно делается с другими изображениями в манифесте. В проекте же вам следует иметь несколько файлов для одного и того же изображения с различными целевыми размерами (не имеющими отношения к масштабированию разрешения): 16×16, 32×32, 48×48, и 256×256. Пример «Запуск приложения для сопоставленных типов файлов и протоколов» (http://code.msdn.microsoft.com/windowsapps/Association-Launching-535d2cec ) использует подобные изображения с суффиксами targetsize-* в имени файла . Использование изображений различных размеров помогает Windows предоставлять наилучший опыт взаимодействия на устройствах различных типов.

Рис. 2.5. Интерфейс Объявления (Declaration) > Сопоставление типов файлов (File Type Associations) в редакторе манифеста Visual Studio

В группе параметров Флаги изменения (Edit Flags) можно управлять тем, будет ли доступно действие Открыть (Open) для загруженных файлов данного типа: установка параметра Безопасное открытие (Open Is Safe) активирует эту команду в различных частях пользовательского интерфейса Windows; установка параметра Всегда небезопасно (Always Unsafe) отключает эту команду. Если оставить оба этих флага неустановленными, доступность команды будет зависеть от того, откуда поступил файл, а так же от других установок системы.

Читайте также:
При запуске программ не является приложением win32

В самой нижней части этого окна вы так же можете установить отдельную начальную страницу (Start page) для обработки активации, однако, обычно используют основной обработчик активации, как показано в js/default.js примера обработки сопоставлений (посмотрите в js/scenario3.js).

Там вы примете вид активации file, в подобном случае eventArgs.detail будет объектом типа WebUIFileActivatedEventArgs (http://msdn.microsoft.com/library/windows/apps/windows.ui.webui.webuifileactivatedeventargs.aspx ), его свойство files содержит массив объектов StorageFile из Windows.System.Launcher.launchFileAsync , и его свойство verb будет иметь значение «open». В ответ, конечно, приложение открывает файл и представляет его содержимое соответствующим образом.

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

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

eventArgs.detail.previousExecutionState содержит значение terminated.

Обработка активации протокола

Создание сопоставления со схемой URI очень похоже на сопоставление с типом файла. В разделе редактора манифеста Объявления (Declarations), добавьте объявление Протокол (Protocol), как показано на рис. 2.6.

Рис. 2.6. Интерфейс Объявления (Declaration) > Протокол (Protocol) в редакторе манифеста Visual Studio

В разделе Свойства (Properties) свойства Значок (Logo), Отображаемое имя (Display Name) и Имя (Name) имеют то же значение, что и для настройки сопоставления типа файла (смотрите предыдущий раздел). Похожим образом, хотя вы можете задать отдельную начальную страницу, обычно активацию протокола обрабатывают в основном обработчике активации, как показано в js/default.js примера об обработке активации файлов и протоколов (пройдите в js/scenario4.js).

Здесь вы принимаете вид активации protocol, в подобном случае eventArgs.detail является объектом типа WebUIProtocolActivatedEventArgs (http://msdn.microsoft.com/library/windows/apps/windows.ui.webui.webuiprotocolactivatedeventargs.aspx ), его свойство uri содержит URI из Windows.System.Launcher.launchUriAsync.

Снова хочу предупредить, что URI с уникальными схемами могут поступать отовсюду, в том числе – из потенциально вредоносных источников. Опасайтесь любых данных или запросов в URI и старайтесь не выполнять, основываясь на них, необратимых изменений. Например, вы, возможно, можете перейти на новую страницу, но не меняйте записи базы данных, пытаясь выполнить команду eval для чего-либо, переданного в URI.

Тем не менее, сопоставление протокола является основным способом, с помощью которого приожение может, когда это необходимо, предоставить ценные услуги другим приложениям. Встроенное приложение Maps (Карты), например, поддерживает схему URI bingmaps:// и сопоставление с ней, что позволяет вам просто открыть URI соответствующего формата для того, чтобы показать пользователю интерактивную карту вместо того, чтобы пытаться реализовать подобную функциональность самостоятельно. Это похоже на то, как при использовании почтовго клиента применяют схему mailto:; другие приложения могут просто создать интерфейс для схемы URI для работы с другими сервисами и рабочими процессами.

Совет. Для отладки активации для обработки протокола вам нужно иметь возможность запускать приложение в отладчике при активации. Для того, чтобы это сделать, откройте свойства проекта (команда меню Проект > Свойства (Project > Properties) в Visual Studio) и затем в разделе Свойства конфигурации > Отладка (Configuration Properties > Debugging) установить параметр Запустить приложение (Launch Application) в значение Нет (No).

Поставщики средства выбора файлов

Возвращаясь к Главе 2 курса «Пользовательский интерфейс приложений для Windows 8, созданных с использованием HTML , CSS и JavaScript», где мы рассматривали использование средств выбора файлов и папок для получения доступа не только к файловой системе, но и к содержимому, которым управляют другие приложения, или даже к такому, которой создается по запросу другими приложениями. Внесем ясность в этот вопрос: приложения, которые используют средство выбора файлов, делают это для получения объектов StorageFile или StorageFolder для каких-либо целей. Но это не означает, что приложения-поставщики, которые могут быть активированы с помощью средства выбора файлов, обязательно управляют своими данными как файлами или папками. Их задача заключается в том, чтобы упаковать любые данные, которыми они управляют так, чтобы они выглядели, для средства выбора файлов, как файлы или папки.

В Главе 2 курса «Пользовательский интерфейс приложений для Windows 8, созданных с использованием HTML , CSS и JavaScript», например, мы видели, как приложение Windows 8 для работы с камерой может быть использовано для получения фотографий и передачи их с помощью средства выбора файлов. Подобные фотографии не существуют, когда активируется целевое приложение . Вместо этого, оно отображает интерфейс , посредством которого пользователь может создать файл своими силами, который потом будет передан с помощью средства выбора файла. Таким образом, приложение для работы с камерой ускоряет весь процесс по созданию нового изображения, предоставляя эту функцию в точности тогда, когда пользователь пытается выбрать файл изображения. В противном случае пользователь запустил бы приложение Camera (Камера) отдельно, сделал бы фотографию, сохранил бы ее в локальной файловой системе, переключился бы к исходному приложению для того, чтобы запустить средство выбора файлов и найти эту новую фотографию.

Конечно, средство выбора файлов не ограничено фотографиями: оно работает с файлами любых типов, в зависимости от того, что запрашивает вызывающее его приложение . Одно приложение может позволить пользователю просматривать библиотеку музыки, покупать и загружать записи, и передавать полученный файл средству выбора файлов. Другое может выполнять какие-то запросы к базе данных и возвращать результат в виде файла, еще какое-нибудь приложение может позволить пользователю просматривать онлайновую базу данных с сущностями, представляемыми в виде файлов, скрывая детали загрузки и упаковки этих данных в файлы, как и ожидает пользователь от средства выбора файлов.

Причем, такое поведение не зависит от того, осуществляется ли работа с локальной файловой системой, с онлайновыми ресурсами или с приложениями, которые создают данные динамически. Возможно создать приложение , которое генерирует или получает данные, похожие на файлы, как приложение Camera (Камера), которое позволяет делать фотографии, или приложение для работы со звуком, которое может записывать новые звуки. В подобном случае, однако, помните что контракт Средство выбора файлов создан для выполнения сравнительно быстрых операций по работе с файлами. По этой причине приложению следует предоставлять лишь базовые средства редактирования данных (наподобие кадрирования фотографии или обрезки звука) в данном контексте.

Читайте также:
Как называется программа для работы с бд входящая в пакет Microsoft

Как в случае с целевыми объектами контрактов Поиск и Общий доступ , Visual Studio и Blend предоставляют шаблон элемента для поставщиков средства выбора файлов, в частности, это Контракт средства выбора файлов для открытия (File Open Picker contract item ), в окне, которое появляется по команде Добавить > Создать элемент ( Add > New Item ), которое мы видели ранее (этот пункт скрыт выше списка, показанного на рис. 22.4). Этот элемент предоставляет вам базовую структуру для выбора файлов, построенную на основе элемента управления ListView, но не более того. Здесь мы не будем использовать этот шаблон , вместо этого возьмем соответствующие элементы из примеров. Говоря в общем, при обслуживании контракта Средство выбора файлов, приложению следует использовать тот же самый режим просмотра и интерфейс , который оно имеет при обычном запуске, таким образом, сохраняя единообразие опыта работы с ним при обоих сценариях.

Источник: intuit.ru

Часть 2. Разделяемые файловые ресурсы

  1. С помощью окна Мое сетевое окружение посмотрите состав вашей сети.

  1. Запустите изолированную оснастку «Общие папки».
  2. Выделите с ее помощью свою папку в совместное использование. Как создать невидимый ресурс? Убедитесь в его «невидимости».

  1. Как выделить некоторую папку в совместное использование из командной строки? (Cм. прил. А).
  2. Установите некоторые разрешения на доступ по сети всем пользователям, отдельному пользователю или группе. Как взаимодействуют локальные разрешения и сетевые?

  1. Подключите папку на другом компьютере в качестве своего локального диска. Проделайте это из командной строки с «невидимым» ресурсом другого компьютера.

Netuseбуква_диска: \имя_пк _в_сетиимя

  1. Как послать сообщение по сети некоторому пользователю? Как послать сообщение всем? Выполните это.

  1. Установите возможность работы с некоторыми файлам, доступными по сети в автономном режиме.

Методы синхронизации:

  • Музыка, хранящаяся на переносном медиапроигрывателе, и музыка, хранящаяся на компьютере. Основная музыкальная коллекция хранится на компьютере, и вам нужно, чтобы все музыкальные файлы, которые добавляются на компьютер или удаляются с него, также добавлялись или удалялись с переносного медиапроигрывателя. При этом композиции, удаляемые с устройства, не должны удаляться с компьютера, поэтому между компьютером и переносным медиапроигрывателем создается партнерство односторонней синхронизации. При добавлении или удалении музыки с компьютера центр синхронизации добавит или удалит те же композиции с проигрывателя.
  • Файлы, хранящиеся на компьютере и в сетевой папке. Вы с коллегами совместно работаете над комплектом документов, хранящихся на сетевом сервере. С данной сетевой папкой настроено партнерство синхронизации автономных файлов. Теперь при отключении компьютера от сети или потере сервером сетевого подключения можно продолжать работать с этими файлами. При следующем подключении к этой сетевой папке все внесенные изменения также будут внесены и в файлы данной папки.

Часть 3. Настройка обработки файлов с определенным расширением

  1. Создать и прописать в реестре новое расширение.

Пример Создадим обработчик произвольного расширения .rrr.

  • В разделе HKEY_CLASSES_ROOT добавим новый раздел .rrr.
  • Параметр, соответствующий этому разделу, должен содержать ссылку на некоторый тип файла, например rrrfile.
  • Создадим в ветви HKEY_CLASSES_ROOT раздел с именем типа файла rrrfile.
  • Создадим в разделе rrrfile подраздел Shell.
  • Далее в подразделе Shell создадим подразделы open (команда открытия) и list (возможно любое другое название) без параметров, а в них подразделы command, параметрами которых являются команды обработки файлов с данным расширением соответственно на открытие и, например, просмотр.

Например, команда открытия редактором Блокнот может выглядеть следующим образом: notepad.exe %1 (см. рисунок).

  1. Через системный реестр задайте возможность появления команды Зашифровать / Дешифровать. Чтобы ее активизировать, необходимо добавить параметр EncryptionContext Menu со значением 1 типа REG_DWORD в раздел реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoft WindowsCurrentVersion ExplorerAdvanced).

  1. Изучите содержимое раздела HKLMSoftware MicrosoftWindowsCurrentVersion, а именно подразделы: Run, RunOnce. Для чего обычно используются эти подразделы?

  1. С помощью команды REG создайте Reg-файл, содержащий информацию о созданном типе файла. Какова структура Reg-файла? Измените команду обработки описанного Вами расширения и импортируйте Reg-файл обратно в реестр. Проверьте через редактор реестра правильность Ваших действий.

  1. Задайте обработку файла с некоторым расширением другим способом: с помощью команд ASSOC и FTYPE (см. Приложение А).

Источник: studfile.net

СПОСОБЫ ОБРАБОТКИ ФАЙЛОВ ПОСЛЕДОВАТЕЛЬНОГО И ПРЯМОГО ДОСТУПА

Смысл последовательного доступазаключается в том, что в каждый момент времени доступна лишь одна компонента из всей последовательности. Для того, чтобы обратиться (получить доступ) к компоненте с номером К, необходимо просмотреть от начала файла К-1 предшествующую компоненту. После обращения к компоненте с номером К можно обращаться к компоненте с номером К+1. Отсюда следует, что процессы формирования (записи) компонент файла и просмотра (чтения) не могут произвольно чередоваться. Таким образом, файл вначале строится при помощи последовательного добавления компонент в конец, а затем может последовательно просматриваться от начала до конца.

Прямой доступ означает возможность заранее определить в файле блок, к которому будет применена операция ввода-вывода. В случае бестиповых файлов блок равен размеру буфера, для компонентных файлов блок – это одна компонента файла.

Прямой доступпредполагает, что файл представляет собой линейную последовательность блоков. Если файл содержит n блоков, то они нумеруются от 1 через 1 до n. Кроме того, вводится понятие условной границы между блоками, при этом условная граница с номером 0 расположена перед блоком с номером 1, граница с номером 1 расположена перед блоком с номером 2 и, наконец, условная граница с номером n находится после блока с номером n.

Реализация прямого доступа осуществляется с помощью функций и процедур FileSize, FilePos, Seek и Truncate.

Функция FileSize (var f): Longintвозвращает количество блоков в открытом файле f.

Функция FilePos (var f): Longintвозвращает текущую позицию в файле f. Позиция в файле – это номер условной границы. Для только что открытого файла текущей позицией будет граница с номером 0. Это значит, что можно записать или прочесть блок с номером 1. После чтения или записи первого блока текущая позиция переместится на границу с номером 1, и можно будет обращаться к блоку с номером 2. После прочтения последней записи значение FilePos равно значению FileSize.

Читайте также:
В какой программе создать бизнес план самостоятельно

Процедура Seek (var f; N: Longint)обеспечивает назначение текущей позиции в файле (позиционирование). В параметре N должен быть задан номер условной границы, предшествующей блоку, к которому будет производиться последующее обращение. Например, чтобы работать с блоком 4, необходимо задать значение N, равное 3. Процедура Seek работает с открытыми файлами.

Процедура Truncate (var f)устанавливает в текущей позиции признак конца файла и удаляет (стирает) все последующие блоки.

В тех случаях, когда программа обрабатывает достаточно большой объем данных, последние обычно организуются и хранятся вне оперативной памяти ЭВМ. Наиболее эффективным устройством для организации внешнего хранения данных являются диски. Прежде чем читать или записывать информацию в файл, надо открыть его с помощью стандартной библиотечной функции fopen.Программа, использующая эту функцию, должна включать во время компиляции системный файл stdio.h,в котором определен новый тип данных — FILE.

В программе нужно описывать ссылки на файлы и выглядит это, например, так: FILE *fu;

Здесь fuозначает указатель на FILE, а fopenвыдает ссылку на этот файл. Функция fopenимеет следующий заголовок:

FILE *fopen(char *fname, char type);

Обращение к fopenв программе делается так: fu=fopen(fname, type);

Строка символов fnameсодержит имя файла, который надо открыть;

type- тоже строка символов, заключенная в кавычки и указывающая, как будет использоваться файл: «r»-чтение, «w» — запись, «r+» — чтение с дозаписью, «a» -дозапись. Функция fopenвозвращает указатель, с помощью которого мы в дальнейшем будем обращаться к этому файлу.

FILE *uin, *uout;
uin=fopen(«MAK1″,»r»);
uout=fopen(«MAK2″,»w»);

Файл с именем MAK1открывается для чтения и далее идентифицируется как uin;

файл MAK2открывается для записи и связывается с идентификатором uout.

Язык (Турбо) СИ не содержит средств поддержки ввода/вывода. Каждая реализация СИ должна со-

провождаться библиотечными и макро, обслуживающими ввод/вывод. По мере развития СИ функции

ввода/вывода становились стандартизированными. Такая стандартизация обеспечила высокий уровень

мобильности программы на СИ.

Термин поток происходит из представления о последовательной структуре информационных запи-

сей [3]. Состав потока задается структурой FILE, описание которой задается в файле stdio.h.

Символ EOF определяется следующим образом:

Этот символ в операциях ввода/вывода служит для обозначения и проверки конца файла.

Функция fopen используется для открытия потока (файла). Интерфейс с функцией fopen описывает-

ся следующим образом:

FILE fopen(char filename, char type);

В качестве первого параметра функции должно передаваться правильное имя файла.

Второй параметр определяет тип открываемого файла.

Допустимы следующие типы файлов:

«r» Открыть уже существующий файл на ввод

«w» Создать новый файл или очистить уже существующий файл и

открыть его на вывод.

«a» Создать новый файл для вывода или осуществить вывод в конец уже существующего файла.

«r+» Открыть существующий файл для обновления, которое будет проводиться с начала файла.

«w+» Создать новый или открыть существующий файл для обновления его содержимого.

«a+» Создать новый файл или подстроиться в конец существующего файла для обновления его содер-

Функция flclose выглядит следующим образом:

int fclose (FILE *stream);

С помощью этой функции файл закрывается.

Функция fseek описывается следующим образом:

int fseek (FILE *stream, long offset, int wherefrom);

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

Первый аргумент задает поток, к которому должен осуществляться прямой доступ.

Второй аргумент указывает число байт смещения от точки, определяемой третьим параметром

Третий параметр указывает точку, от которой следует начинать отсчет смещения, заданного вто-

Значение 0 – смещение от начала файла.

Значение 1 – смещение от текущей позиции файла.

Значение 2 – смещение от конца файла.

5. ДИНАМИЧЕСКИЕ СТРУКТУРЫ

К динамическим структурам относят структуры, которые могут изменять свой размер.

Для организации таких структур используются динамические переменные, которые создаются и уничтожаются в процессе выполнения программы.

1. Эти переменные явным образом не описываются, к ним невозможно обратиться с помощью идентификатора.

2. Память для этих переменных не выделяется во время формирования кода программы. Она выделяется в специальной области оперативной памяти — heap-области — только во время выполнения программы.

3. Доступ к таким переменным выполняется с помощью указателей, которые становятся активными после определения динамического объекта и содержат адрес в виде :

1. Массивы указателей

2. Линейные и циклические односвязанные списки, стек, очередь

3. Линейные двухсвязные списки

Массив указателейна данные одного типа. Элементами такого массива есть указатели на базовую структуру: строка, запись, и т.п.. Хотя сам массив имеет фиксированный размер и занимает постоянное место в оперативной памяти, динамические элементы базового типа будут образовываться и размещаться в динамической памяти во время выполнения программы.

Линейный и циклический односвязанный список. Каждый отдельный элемент такой структуры содержит кроме одного или нескольких информационных полей поле, в котором сохраняется адрес следующего элемента. Последний элемент линейного списка содержит пустую ссылку (nil), тогда как последний элемент циклического списка содержит ссылку на первый элемент. Такие структуры образовываются и изменяются только во время работы программы.

Стек. С помощью линейного односвязного списка может быть построенный следующим образом: список будет возрастать из конца, от элемента с пустой ссылкой на следующий. Каждый очередной элемент будет прибавляться перед ним и становиться текущим (доступным для обработки — чтения). При чтении последнего элемента он уничтожается и указатель текущего элемента устанавливается на предыдущий.

Очередь. Также может быть построена с помощью линейного односвязного списка. Добавление элемента к очереди будет выполняться в конец списка (после последнего элемента), а считывание — из первого элемента со следующим его уничтожением. Таким образом надо будет сохранить два указатели — ссылка на первый и последний элементы очереди.

Двухсвязный список- такой, каждый элемент которого содержит две ссылки — на предыдущий и на следующий элементы. Первый элемент содержит пустую ссылку на предыдущий элемент, а последний — пустая ссылка на следующий элемент. Такой список также можно сделать циклическим.

Двоичные деревья могут также быть построены на базе элементов с двумя адресными полями. Одно из них содержит ссылку на левую, а второе — на правую ветвь поддерева, которое начинается с данного узла. Если одна из ветвей отсутствующая, в адресном поле, предназначенном для нее, содержится nil.

Источник: megaobuchalka.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru