
20-06-2007, 20:54
|
|
|
|
חבר מתאריך: 20.06.07
הודעות: 1
|
|
|
תמורות - רשימות מקושרות
שלום לכולם!!
אני שוברת את הראש כבר 5 ימים על הפונקציה הבאה
אשמח אם תוכלו לזרוק לי איזה עצם.
מדובר בשפת C כמובן....
הגדירו פונקציה רקורסיבית בשם createPermutChainRec בעלת שורת ההצהרה הבאה:
void createPermutChainRec(ListList **pChain, List *domain, List *suffix);
מטרת הפונקציה היא ליצור שרשרת של תמורות עבור סדרת מספרים נתונה. הפונקציה מקבלת שלושה פרמטרים:
· suffix - מצביע לרשימה מקושרת רגילה המכילה סיפא (סיומת) של תמורה (איברים שמיקומם בתמורה כבר נקבע בסופה),
· domain - מצביע לרשימה מקושרת רגילה המכילה מספרים שלמים חיוביים ממוינים בסדר עולה שמייצגים את האיברים שמיקומם בתמורה טרם נקבע,
· pChain - הוא כתובת של מצביע לרשימה מקושרת דו-ממדית המייצגת את שרשרת המטרה (אותה הפונקציה אמורה לבנות).
הפונקציה צריכה להוסיף לשרשרת המטרה את כל התמורות המסתיימות ב-suffix נתון שתחילתן מורכבת מאיברי ה-domain (מהווה תמורתם). את התמורות החדשות יש להוסיף לשרשרת באופן כזה שישמור על הסדר הנכון בין התמורות (לפי הגדרה בתחילת התרגיל).
לדוגמה, בהינתן מצביע dom לרשימה אשר מכילה את הסדרה( 1 3 ) ,
מצביע suf לרשימה ( 2 1 )
ומצביע נוסף chain לרשימה דו-ממדית הבאה:
2-3-1-1
|
3-2-1-1
הקריאה createPermutChainRec(&chain, dom, suf) תשנה את השרשרת באופן הבא:
1-3-2-1
|
3-1-2-1
|
2-3-1-1
|
3-2-1-1
המון המון תודה!!!
נערך לאחרונה ע"י ccc23 בתאריך 20-06-2007 בשעה 20:56.
|