עבור לתוכן

מבנים ורשימות מקושרות בC.

Featured Replies

פורסם

חבר'ה,

אני צריך עזרה. נגיד ויש לי מבנה ובו שדות מסוימים כולל מצביע לתא הבא.

ואני רוצה לקלוט בפונקציה ערכים מהמשתנה ולהוסיף את התא הזה לרשימה.

נגיד ואני רוצה לעשות את זה 3 פעמים.

אז איך אני אמור לעשות את זה?

הכוונה שלי היא - אם אני יוצר מבנה בפונקציה (בכל פעם משלוש הריצות של הפונ') ואז מכניס אליו ערכים ושומר את הכתובת שלו בnext של האחרון ברשימה, זה בסדר?

או אם אני יוצר מבנה בmain ואז שולח אותו by adress לפונ' (3 פעמים בלולאה) ואז קולט ערכים ושומר את הכתובת שלו בnext של האחרון ברשימה, זה בסדר?

באופן יותר כללי, איזה מבנה שאני אצור ימות לי בסוף הפונקציה ואני לא אוכל להשתמש בו ברשימה ואיזה מבנה לא?

האם תוכלו להסביר לי, כיצד הדרך הנכונה להוסיף איבר לרשימה-

לדוגמא:

struct person{

char* name

int age;

structperson * next;

{

עכשיו בmain אני יוצר משתנה מסוג struct person שהוא ראש הרשימה נגיד.

ואני רוצה להוסיף עוד איבר שיהיה השני בתור. תוכלו לרשום לי את הMain ואת הפונקציה שעושה את זה?

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

תודה מראש לכל העוזרים.

פורסם

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

בכל מקרה, כאן יש דוגמת קוד של רשימה מקושרת ב-C.

פורסם
  • מחבר

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

ולעשות free אני צריך רק בסוף בסוף אחרי שאני לא צריך אף תא, נכון?

פורסם
  • מחבר

תודה רבה חבר. עזרת לי מאוד. :)[br]פורסם בתאריך: 9.02.2009 בשעה 23:25:32


התכנית עפה לי ברגע שאני עושה ריאלוק לאחד התאים.

לא הבנתי למה, כי אם אני עושה הקצאה שלא הצליחה אז malloc אמור להחזיר לי NULL ואז יש לי הודעת שגיאה מתאימה שאמורה לפעול.

פורסם
  • מחבר

הנה הקוד.

התכנית עפה בשני מוקדים שונים-

1. בפונקציה Feats_A אחרי הקשת End attribute - אמור לצאת מהלולאה ולחזור בשלום.

ד"א- קיימת פונקציה זהה Feats שמטפלת בבתים והיא מסיימת את פעולתה בסדר גמור.

2. כאשר מקישים 2 בתפריט הראשי (לעשות Update לאיבר ברשימה) כאשר מכניסים את שם הרחוב.

התכנית מנהלת רשימה של נכסים- בתים ודירות.

כדי להוסיף בית יש ללחוץ 1 ואז House

בשביל דירה יש ללחוץ 1 ואז Multi-Story Building Apartment

כדי לעדכן רשומה, לוחצים 2 ואז את המספר הסידורי שלה (מתחיל מ1 לפי הסדר).[br]פורסם בתאריך: 10.02.2009 בשעה 09:43:53


הצלחתי לפתור את הבעיה הראשונה.

בעיה בפונקציה Add. עכשיו מנסה לראות שוב את השניה.

הבעיה נפתרה. תודה רבה לך שניצל.

שיהיה לך יום נעים =]

[attachment deleted by admin]

ארכיון

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

דיונים חדשים