سلام خدمت دوستان،

با این سوال مواجه شدم:

یک تابع بازگشتی بنویسید که اشاره گر به ابتدای یک لیست یک پیوندی را بگیرد، علاوه بر برعکس کردن کلیه لینک ها یک کپی از هر گره را قبل از آن گره ایجاد کند و اشاره گر head باید به اولین گره لیست جدید که همان آخرین گره لیست قدیم است اشاره کند. مثال : اگر لیست به صورت
باشد پس از فراخوانی تابع
head=reverse(head);
لیست بدین شکل خواهد بود.




Node reverse(p)
{
if(p.next.next!=null)
t=p.copy();
p.next=t'
head=p.next;
else
t=p.copy();
p.next=t;
head=reverse(p.next);
p.next.next=p;
p.next=0;
return head;
}
}





اشکال کار کجاست؟
آیا درست حل نکردم؟