Struct tel

{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;