לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 20-11-2006, 19:14
  69cool 69cool אינו מחובר  
 
חבר מתאריך: 11.08.05
הודעות: 357
[C]עזרה אם רשימה מקושרת

שמעו אני השמח אם תעזרו לי אם רשימה מקושרת,את הקטע הבא העתקתי מהספר
אני השמח אם תעזרו לי לבנות את הMAIN של התוכנית אני לא הבנתי כל כך זה סבתוכה אחת גדולה בראש שלי חח
אמ...אם מישיכול להסביר לי את העיקרון בתכנות של רשימה מקושרת כי לא כל כך הבנתי
קוד:
#include<stdio.h> #include<string.h> struct phonenum{ char first_name[7],last_name[12],address[22],tel[11]; struct phonenum *nxt_phone }; struct phonenum *first_phone; = malloc(sizeof(struct phonenum)); struct phonenum *find_place(char *new_name){ struct phonenum *p,*save; char found = 0; for(save = p,p = first_phone; p && (!found) ;p = p->nxt_phone){ if(strcmp(new_name,p->last_name) < 0) found = 1; else found = 0; } return(save); } struct phonenum *insert(struct phonenum **after){ struct phonenum *save; save = *after; *after = malloc(sizeof(struct phonenum)); if(after != NULL) (*after)->nxt_phone = save; return (*after); } void add_phone(char *f_nam,char *l_nam,char *address,char *tel){ struct phonenum *p; p = find_place(l_nam); if(p == first_phone) p = insert(&first_phone); else p = insert(&(p->nxt_phone)); strcpy(p->first_name,f_nam); strcpy(p->last_name,l_nam); strcpy(p->address,address); strcpy(p->tel,tel); }


תודה.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 21-11-2006, 05:26
צלמית המשתמש של ם_O
  משתמש זכר ם_O ם_O אינו מחובר  
 
חבר מתאריך: 15.08.06
הודעות: 465
לפי מה שאני רואה הקוד אחלה..
בתגובה להודעה מספר 1 שנכתבה על ידי 69cool שמתחילה ב "[C]עזרה אם רשימה מקושרת"

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

בmain, אתה צריך להקצות זיכרון לעוגן (החוליה הראשונה ברשימה), אז שים בתחילתה את מה שכבר כתבת איפשהו
קוד PHP:
 struct phonenum *first_phone=malloc(sizeof(struct phonenum)); 


לגבי הוספת חוליות, הפונקציות שכתובות מטפלות בזה בסדר גמור, לגבי הסרה - אתה מוצא את החוליה
שלפני החוליה שאתה רוצה להסיר עם הפונקציה
find_place
שכתבת, מציב את ה
*nxt_phone
של החוליה הבאה בחוליה שהפונקציה החזירה, ומנקה את ההקצאה
_____________________________________
Any sufficiently advanced bug is indistinguishable from a feature


נערך לאחרונה ע"י ם_O בתאריך 21-11-2006 בשעה 09:14.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 22-11-2006, 16:32
  69cool 69cool אינו מחובר  
 
חבר מתאריך: 11.08.05
הודעות: 357
שמע יש לי בעיה
בתגובה להודעה מספר 1 שנכתבה על ידי 69cool שמתחילה ב "[C]עזרה אם רשימה מקושרת"

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

עכשיו לעיניין יש לי בעיה אני לא מצליח להגדיר את העוקן כגלובלי,כי אם תשים לב הפונקציות משתמשות
בעוקן בשביל בדיקה וכאלה.אז ככה שאני לא יכול להגדיר אותו בMAIN אלה כמשתנה גלובלי
אבל כשאני עושה את זה זה עושה לי כמה שגיאות הינה הם
קוד:
--------------------Configuration: connect_list - Win32 Debug-------------------- Compiling... connect_list.c G:\my program\connect_list.c(9) : error C2371: 'first_phone' : redefinition; different basic types G:\my program\connect_list.c(8) : see declaration of 'first_phone' G:\my program\connect_list.c(9) : warning C4013: 'malloc' undefined; assuming extern returning int G:\my program\connect_list.c(9) : error C2099: initializer is not a constant G:\my program\connect_list.c(15) : error C2115: '=' : incompatible types G:\my program\connect_list.c(27) : warning C4047: '=' : 'struct phonenum *' differs in levels of indirection from 'int ' Error executing cl.exe. connect_list.exe - 3 error(s), 2 warning(s)


והקוד שלי זה(ואל תגידו לי להחליף את הINT ל MAIN כי זה לא קשור לטעויות)
קוד:
#include<stdio.h> #include<string.h> struct phonenum{ char first_name[7],last_name[12],address[22],tel[11]; struct phonenum *nxt_phone; }; struct phonenum *first_phone; *first_phone = malloc(sizeof(struct phonenum)); struct phonenum *find_place(char *new_name){ struct phonenum *p,*save; char found = 0; for(save = p,p = *first_phone; p && (!found) ;p = p->nxt_phone){ if(strcmp(new_name,p->last_name) < 0) found = 1; else found = 0; } return(save); } struct phonenum *insert(struct phonenum **after){ struct phonenum *save; save = *after; *after = malloc(sizeof(struct phonenum)); if(after != NULL) (*after)->nxt_phone = save; return (*after); } void add_phone(char *f_nam,char *l_nam,char *address,char *tel){ struct phonenum *p; p = find_place(l_nam); if(p == first_phone) p = insert(&first_phone); else p = insert(&(p->nxt_phone)); strcpy(p->first_name,f_nam); strcpy(p->last_name,l_nam); strcpy(p->address,address); strcpy(p->tel,tel); } void main(){ getch(); }
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 01:51

הדף נוצר ב 0.05 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר