перевернуть односвязный список, сохранив все адреса узлов в векторе - PullRequest
0 голосов
/ 10 апреля 2020

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

/*struct Node {
  int data;
  struct Node *next;
  Node(int x) {
    data = x;
    next = NULL;
  }
};
*/
// Should reverse list and return new head.
#include<bits/stdc++.h>
Node* reverseList(Node *head)
{
  // Your code here
    if(head==NULL) return head;
    vector<Node*> k={head};
    cout<<head->data;;
    while(head->next!=NULL){
        head=head->next;
        k.push_back(head);
        //cout<<" "<<head->data;
    }
    cout<<endl;
    for(int i=k.size()-1;i>=0;i--){
        if(i==0) k[i]->next=NULL;
        Node* temp=k[i-1];
        k[i]->next=temp;
        //cout<<" "<<k[i]->data;
    }
    return head;
}
...