2013-12-09 3 views
0

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

код прилагается ниже

int places::showfirst() 
    { 
     node * current = head; 
     node * temp = current -> next; 
     node * temp2 = new node; 
     cout << "The first place you visited is \n\n\t\n " << current -> place << endl; 
     current->place = temporary; 
     first = new char [strlen(temporary) +1]; 
     strcpy(first,temporary); 

     while(current->next) 
     { 
       current = current -> next; 
     } 
     head = temp; 
     current -> next = temp2; 
     temp2 -> next = NULL; 
     temp2->place = first; 

     cout<<"THIS IS THE NEW LAST NODE " << temp2->place << endl; 
     return 1; 
    } 

Любые предложения будут оценены, спасибо заранее.

+0

Вместо создания нового узла, то почему бы не просто установить рядом последнего узла к узлу, который требуется переместить до конца? – fjc

ответ

1

Нет необходимости в перераспределении или перераспределении памяти ИМО. Вы можете просто изменить ссылки и преобразовать существующий узел головки к последней:

node * current = head; 
node * temp = current -> next; 
cout << "The first place you visited is \n\n\t\n " << current -> place << endl; 
while(current->next) 
{ 
    current = current -> next; 
} 
current -> next = head; 
head -> next = NULL; 
head = temp; 
+0

После добавления temp2 после строки «current -> next = head» и назначения его, чтобы возглавить обработанный метод, большое вам спасибо! – azizj

Смежные вопросы