Информатика и технология программирования


Односвязные списки - часть 3



void insertlast(list * &#38ph, int v)
{ list *qq; // указатель на текущий


list *p= new list; // создать элемент списка;


p-&#62val = v; // и заполнить его


p-&#62next = NULL; // новый элемент - последний



if (ph==NULL) ph=p; // Список пустой меняем заголовок


else
{ // Поиск последнего


for (qq = ph; qq-&#62next!=NULL; qq = qq-&#62next);
qq -&#62next = p;
}
}
//----- Удаление элемента из списка по заданному номеру


// Используется ссылка на указатель на переменную-заголовок


void removelist * &#38p h, int n)
{ list *q ,*pr,*p;
// Двигаться по списку, пока он не кончится, либо пока


// не обнулится счетчик, сохраняя указатель на предыдущий


// элемент - pr


for ( p=ph,pr=NULL; n!=0 &#38&#38 p!=NULL; n--, pr=p, p =p-&#62next);
if (p==NULL) return ph;
if (pr==NULL)
{ q=ph; ph=ph-&#62next; } // Исключить первый


else // Исключить из середины


{ q=p; pr-&#62next=p-&#62next; }
delete q; // Уничтожить элемент списка


}




Начало  Назад  Вперед