Return x;. Отметим, что предложенная функция не может выполнить вставку узла в начало списка, так как для первого узла не существует предшественника

}

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

NODE *InsertNode(NODE **p){

// функция выполняет вставку нового узла вслед за

// *p и возвращает указатель на новый узел

NODE *x;

x=new NODE;

x->Next=*p;

*p=x;

Return x;

}

Теперь, если требуется выполнить вставку узла вслед за узлом, на который указывает указатель z, следует обратиться к функции:

S=InsertNode(&(z->Next));

А для вставки узла в начало списка, на который указывает указатель q, следует использовать обращение:

q=InsertNode(&q);

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

Для удаления узла односвязного списка необходимо знать указатель на его предшественника:

 

bool DeleteNode(NODE *p){

// функция удаляет узел, следующий за p

// и возвращает true в случае успеха

NODE *t;

if(p->Next==NULL)return false;

t=p->Next;

p->Next=t->Next;

Delete t;








Дата добавления: 2014-12-02; просмотров: 807;


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

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

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

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