ВУЗ:
Составители:
Рубрика:
142
3) Исключение из списка.
Пусть теперь значением переменной q является указатель на не-
который, не последний, элемент списка и требуется исключить из спи-
ска элемент, следующий за ним. Это можно сделать так:
r = q->next;
q->next = q->next->next;
r->next = NULL;
Второе из приведенных присваиваний – это собственно исключе-
ние из списка, а первое выполняется для того, чтобы сохранить указа-
тель на исключенный элемент, т.е. чтобы после исключения из списка
он оставался доступным и с ним можно было бы выполнять некоторые
действия. Например, вставить его на другое место или освободить за-
нимаемую им память с помощью операции delete r.
Третье присваивание выполняется для того, чтобы сделать ис-
ключение окончательным, т.е. чтобы из исключенного элемента нельзя
было бы попасть в список, из которого он исключен.
Реализация списка
Реализуем понятие списка через механизм классов.
// Файл ”list.cpp”
#include < iostream.h >
#include < stdlib.h >
typedef int ETYPE;
struct elem {
ETYPE data;
elem * next;
elem ( ETYPE e, elem * n ) { data = e; next = n;}
};
class list {
elem *h; // Адрес начала списка.
public:
list ( ) { h = NULL; }
~list ( ) {release ( ); }
void create ( ETYPE ); // Добавляет элемент в начало
списка.
void release ( ); // Удаляет список.
void insert (elem* q, ETYPE c); // Вставляет в список с после q.
void del0 ( ) { // Удаляет первый элемент.
elem *t = h; h = h->next; delete t;}
Страницы
- « первая
- ‹ предыдущая
- …
- 138
- 139
- 140
- 141
- 142
- …
- следующая ›
- последняя »