Однонаправленные (односвязные) списки

Наиболее простой динамической структурой является однонаправленный список, элементами которого служат объекты структурного типа.

Однонаправленный (односвязный) список – это структура данных, представляющая собой последовательность элементов, в каждом из которых хранится значение и указатель на следующий элемент списка (рис. 29.1). В последнем элементе указатель на следующий элемент равен NULL.


Рис. 29.1. Линейный однонаправленный список

 

Описание простейшего элемента такого списка выглядит следующим образом:

 

struct имя_типа

{

информационное поле;

адресное поле;

};

 

где информационное поле – это поле любого, ранее объявленного или стандартного, типа;

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

Например:

struct pointer

{

int d; //информационное поле

pointer *p; //адресное поле

};

 

Информационных полей может быть несколько.

Например:

struct point

{

char *name; //информационное поле

int age; //информационное поле

point *next; //адресное поле

};

Каждый элемент списка содержит ключ, который идентифицирует этот элемент. Ключ обычно бывает либо целым числом, либо строкой.

Основными операциями, осуществляемыми с однонаправленными списками, являются:

  • формирование списка;
  • добавление в список
  • печать или просмотр (извлечение) списка;
  • вставка элемента в список;
  • удаление элемента из списка;
  • поиск элемента в списке
  • проверка пустоты списка;
  • удаление списка.

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

Рассмотрим подробнее каждую из приведенных операций.

Для описания алгоритмов этих основных операций используется следующее объявления:

struct pointer

{

int d; //информационное поле

pointer *p; //адресное поле

};

. . . . . . . . . .

pointer *ph; //указатель на первый элемент списка

pointer *pk; //указатель на конец списка

. . . . . . . . . .

pointer *pc; //указатель на текущий элемент списка (при необходимости)








Дата добавления: 2015-08-14; просмотров: 822;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.