Добавление элемента в двухсвязный список

Рейтинг: 0Ответов: 1Опубликовано: 06.05.2011

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

void add(INFO d, BOOK *&head)
{
    BOOK *tmp = new BOOK;
    tmp->data = d;
    tmp->next = head;
    head=tmp;
}

Ответы

▲ 4
BOOK *add(INFO d, BOOK *head)  // head указатель на первый элемент списка
{      // для создания нового списка вызвать list = add(d,NULL);
       // для добавления в существующий      list = add(d,list);
   BOOK *tmp = new BOOK;
   tmp->data = d;
   tmp->next = head;
   tmp->previous = NULL;
   if (head!=NULL)             // список уже существует
      head->previous = tmp; 
   return tmp;
 }