سوال ۴

تابعی بنویسید که دو ورودی از نوع * ‎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‎ بیش‌تر از ‎۱‎ است. ‎

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