Head присваивается значение Null каждый раз, когда функция insert_node () вызывает в связанном списке

0

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

Проблема заключается в следующем: каждый раз, когда элементу "Голова" присваивается "NULL", что нежелательно, за исключением первой вставки. пожалуйста, дайте рекомендации для решения этой проблемы.

class Node{
      public:
      int item;
      Node *next;
      Node(){};
   };  

   class List{
     public:
     Node *head;
     Node **lpp1;
     Node *lp1;
     Node *newnode;
     List(){head=NULL;};
     void insert_node(Node*,Node**,Node*);
     void delete_node(int,Node*,Node*);
    .
    .
    .
    .   
    .
    };   

  void List::insert_node(Node* newlp,Node **lpp,Node *lp)
     {
       *lpp=head;
       cout<<"\n value of the *lpp points to :"<<*lpp;
       cout<<"\n Initial Address of the head is:"<<head;'

       if((*lpp)!=NULL)
        {
     for(lpp=&head;(*lpp)!=NULL;lpp=&(*lpp)->next){
       lp=*lpp;
           if(newlp->item<lp->item){
        newlp->next=lp;
        *lpp=newlp;
        break;
        }
       else{
         lp->next=newlp;
              *lpp=lp;
              break;
        }

        }   

    }

    else{
      head=newnode;
      cout<<"\n address of head is  :"<<head;
      cout<<"\n "<<head->item<<" is head.";
    }

     }

 int main()
  {
   List l;
   l.insert_node(l.newnode,l.lpp1,l.lp1);
  }

вывод, который я получаю:

1st insertion:

Enter the element to be inserted:34

value of the *lpp points to : 0 
Initial Address of the head is: 0
address of the head is :0x8dd2008
 34 is head.
2nd Insertion:

Enter the element to be inserted:56

value of the *lpp points to : 0 
Initial Address of the head is: 0 
address of the head is :0x8dd2018 
56 is head.
  • 0
    Может ли кто-нибудь, пожалуйста, помогите мне в знании этого вопроса. это было закодировано в C ++
  • 0
    Ваш отправленный код и выходные данные не совпадают. Трудно понять, где может быть проблема.
Показать ещё 2 комментария
Теги:
pointers
linked-list

1 ответ

0
Лучший ответ

Назначение "* lpp = head;" неверно, потому что "lpp" имеет значение null, а "* lpp" пытается разыменовать нулевой (или неинициализированный) указатель. Убедитесь, что всякий раз, когда вы разыскиваете указатель, этот указатель не равен нулю.

Узел ** lpp1; Узел * lp1; Узел * newnode; члены не инициализируются. Вам даже не нужны эти члены. Все, что вам нужно в классе List, является указателем на главный узел.

  • 0
    Большое спасибо, Олег, за ваш ценный ответ,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню