You are not allowed to perform this action

سوال ۴

تابعی بنویسید که دو ورودی از نوع * node بگیرد. فرض کنید که node نوع عناصر یک linked list است. اعلان تابع بصورت زیر می‌باشد: node *rev _ link(node *p, node *q=NULL)

این تابع بصورت زیر صدا زده می‌شود: (start=rev_link(start فرض کنید که start متغیر شروع یک linked list را نشان می‌دهد. در ضمن می‌دانیم برای هر عضو از linked list، اشاره‌گر next به عنصر بعدی آن اشاره می‌کند و next عنصر آخر NULL است. تابع rev_link بایستی next هر عنصر را، عنصر قبلیش قرار دهد، و next اولین عنصر را آخرین عنصر قرار دهد. هم‌چنین این تابع بایستی یک اشاره‌گر به آخرین عنصر linked list را به‌عنوان خروجی بدهد. بدیهی است که شما در نوشتن این تابع نمی‌توانید از متغیّرها یا آرایه‌های Global استفاده کنید.

برای راحتی فرض کنید که تعداد عناصر linked list بیش‌تر از ۱ است.

راهنمایی: متغیّر دوم که در آرگومان تابع قرار دارد یک متغیّر کمکی است که شما می‌توانید برای نوشتن تابع از آن بهره ببرید.