עזרה עם שתי פונקציות של רשימה - שפת C. - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה עם שתי פונקציות של רשימה - שפת C.


Pc_Ghost

Recommended Posts

שלום...

זאת הפעם הראשונה שאני פונה לעזרה פה בפורום...פשוט אני התייאשתי...

אני הסתדרתי עם שאר הפונקציות של הרשימה...ועם שתיים נתקעתי...

לפי הממשק של הרשימה הפונקציות מוגדרות כך:

הוצא מרשימה (L, p) - פעולה המוציאה מן הרשימה L את האיבר הנמצא בה במקום p. לאחר ההוצאה נמצא במקום p האיבר שהיה עוקב לזה שהוצא מהרשימה.

אחזר מרשימה (L, p) - פעולה המחזירה את האיבר הנמצא במקום p ברשימה.

*ההנחות הן שהרשימה לא ריקה, והמקום p קיים ברשימה.

הרשימה שלי מוגדרת כך:

struct list {

int num;

list *next

};

list *head;

אני יודעת שזה די ארוך, אבל אודה לכם אם תוכלו לעזור לי...

קישור לתוכן
שתף באתרים אחרים

לא למדתי C, אבל הנה קוד ב-JAVA (אותו עקרון) :

class Link

{

public int iData; //data item (key)

public double dData; //data item

public Link next; //next link in list

//-------------------------------------------------------------------

public Link (int id, double dd) //constructor

{

iData=id; //initialize data

dData=dd; //(next is automatically set to null)

}

//--------------------------------------------------------------------

public void displayLink() //display ourself

{

System.out.print({ + iData + , + dData + } );

}

} //end class Link

//insert at start of list

public void insert(int id, double dd)

{ // make new link

Link newLink = new Link(id, dd);

newLink.next = first; //newLink --> old first

first = newLink ; // first --> newLink

}

public Link delete(int key)

{ Link current = first; // start at first

Link previous = first;

while (current.iData != key)

{ if ( current.next == null)

return null;

else

previous = current;

current = current.next;

}

if (current = first) // if still at beginning

first = current.next;

else

previous.next = current.next;

}

return current;

}

//find an item in the Linkled List

public Link find(int key)

{

Link current = first; // start at first

while (current.iData != key)

{

if ( current.next == null)

return null;

else

current = current.next;

}

return current;

}

בהצלחה. ;)

קישור לתוכן
שתף באתרים אחרים

קודם כל...תודה לך על הטירחה...אבל אני לא ממש יודעת JAVA... :-\...ככה שזה לא ממש עזר...

בכל אופן...הצלחתי לפתור את הבעיה לבד אחרי כמה שעות של חשיבה מאומצת...

קישור לתוכן
שתף באתרים אחרים

קודם כל...תודה לך על הטירחה...אבל אני לא ממש יודעת JAVA... :-\...ככה שזה לא ממש עזר...

בכל אופן...הצלחתי לפתור את הבעיה לבד אחרי כמה שעות של חשיבה מאומצת...

ככה צריך ! ;D

אל תחפשי מישהו שיעשה לך את התרגיל. תנסי לבד. זו הדרך הטובה ביותר ללמוד.במידה וניסית, ובכל זאת נתקעת, אנשים פה ישמחו לתת לך כוונים למחשבה ולפתרון. חבל לפספס הזדמנות ללמוד רק כי רוצים לסיים את התרגיל כמה שיותר מהר.

הדוגמה בJAVA שניתנה פה אינה מתאימה כלל ל C משתי סיבות - האחת, היא מניחה שאת עובדת ב ++C ולא C. דבר שני - בJAVA אין מצביעים (יש, אבל לא משתמשים בהם) וב C יש להשתמש במצביעים על מנת לממש רשימה מקושרת פשוטה.

נשמח אם תעלי לפה את הפתרון לבעיתך, על מנת שעוד אנשים יוכלו ללמוד מהנסיון שלך.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...