נשלח בתאריך: 07 February 2010 בשעה 23:43 | | IP רשוּם
|
|
|
|
בס"ד
לבקשתך:
/* With God's help. */
# include <stdio.h> # include <conio.h> # include <alloc.h>
typedef struct myStruct { int num; struct myStruct *next; };
void main() { /* נגדיר מצביע שיגדיר שוב ושוב איבר חדש מקושר ומצביע שישמור על תחילת הרשימה- לצורך הדפסה ואח"כ שחרור */ struct myStruct *node, *head; int num;
clrscr();
printf("Enter a num, or -1 to quit. "); scanf("%d", &num); if(num == -1) return;
node = head = (struct myStruct *)malloc(sizeof(node)); node->num = num; node->next = NULL;
do { printf("Enter a num, or -1 to quit. "); scanf("%d", &num); if(num == -1) break;
// יצירת איבר חדש מקושר node->next = (struct myStruct *)malloc(sizeof(node)); // המצביע עומד על האיבר החדש node = node->next; // הכנסת הקלט לתוכו node->num = num; // סימון סוף הרשימה. חשוב ביותר node->next = NULL;
} while(1);
// הדפסת כל איברי הרשימה node = head; do { printf("%d, ", node->num); node = node->next; } while(node);
/* שחרור כל הצמתים שנבנו בזכרון דינמי אסור ליצור זכרון דינמי בלי לשחרר אותו בסוף התכנית היות והוא נשאר תפוס עד לכיבוי המחשב! */ do { node = head->next; free(head); head = node; } while(node);
getch(); }
|