{tip inf; //информационная часть
tel *next; //указатель на следующий элемент
};
2. Описать указатель на связанный список (иногда удобно описать два указателя: на начало и на конец), рабочие указатели.
tel * beg, *p, *q;
3. Объявить список пустым: beg = NULL;
4. Включить элемент x : tip в пустой список:
beg = new tel;
(*beg) . inf=x; beg | x | NULL |
(*beg). next=NULL;
5.Включить элемент x : tip в начало списка:
q= new tel;
(*q) . inf=x;
(*q). next=beg;
beg = q;
beg ≠ | xi |
q
x |
6. Включить элемент x : tip в связанный список после элемента, на который указывает p.
a) q= new tel; б) q = p ->next;
(*q) . inf=x; p ->next= new tel;
(*q). next=p ->next; (p ->next) ->inf = x;
p->next = q; (p ->next) ->next=q;
p
≠ | xi |
q | x |
7.Исключить из списка элемент, следующий за
элементом, на который указывает p.
а) плохой вариант:
p -> next = (p -> next) -> next;
p q
x | x | x |
мусор
б) q = p ->next;
p->next = q-> next;
delete q;
8. Передвинуть указатель p на следующий элемент связанного списка:
p = p-> next;
9. Обработать все элементы связанного списка по очереди с помощью функции void W(tip t).
p=beg;
while (p) // while (p!=null)
{W (p->inf);
p=p->next; }
10.Освободить память, занятую под связанный список.
while (beg)
{ q= beg;
beg= beg ->next;
delete q;
}
11.Пример функции, которая вставляет в связанный список beg элемент x : tip на свое место, и создаёт упорядоченный список за несколько обращений к функции с разными элементами.
void ВСТАВКА (tel * & beg, tip x)
{tel *p, *q, *t;