copyRev
void copyRev(node *head1, node *&head2)
{
stack<int> dat;
node* curr = head1;
while(curr!=NULL){
dat.push(curr->data);
curr = curr->next;
}
while(!dat.empty()){
append(head2,dat.top());
dat.pop();
}
}
追加
void append(node* &head, int data){
if(head==NULL){
head= new node;
head->data = data;
head->next = NULL;
}
else{
node *curr = head;
while((curr)->next!=NULL){
(curr) = (curr)->next;
}
(curr)->next = new node;
(curr) = (curr)->next;
(curr)->data = data;
(curr)->next = NULL;
}
}
さて、私はリンクリストの逆を複製しようとしています。リストを元に戻す方法を知っています。しかし、このコードは私にを与えますBus error(code dumped)
。
これは私が関数を呼び出す方法ですmain()
node *head;
for(int i = 0;i<9;i++){
append(head,i*i);
}
node *revHead;
printList(head);
copyRev(head,revHead);
printList(revHead);
関数では、headappend()
をチェックし、NULL
NULLの場合は新しいノードを作成します。さらに、append関数は、要素をリストに適切に追加します。copyRev
問題が発生したのは、プロシージャを呼び出した後です。
インプレース反転を試しましたが、機能します。リンクリストの逆を複製する必要があります。反復ソリューションと再帰ソリューションの両方を歓迎します。また、上記のコードのエラーを指摘してください。
これは私自身の練習問題ですが、宿題の問題ではありません