سؤال

هل يمكن لأحد أن يشرح هذا؟

struct node 
{ 
    int data; 
    struct node * link; 
} 
main() 
{
    struct node *p, *list, *temp; 
    list = p = temp = NULL; 
    ......................... 
    ......................... 
} 

addbeg() 
{ 
    int x;
    temp=malloc(sizeof(struct node));
    scanf("%d", &x); 
    temp->data=x;
    temp->link = list;
    list=temp;
}

هذا رمز لإدخال البيانات في القائمة المرتبطة من خلال لغة C.الكود غير كامل ولكن أعتقد أنه كافي لهذا الغرض.يرجى شرح الترميز بشكل أساسي على هذه السطور:

 temp=malloc(sizeof(struct node));

و

 temp->link = list;
 list=temp;.
هل كانت مفيدة؟

المحلول

malloc() يستخدم لتخصيص الذاكرة - في هذه الحالة لعقدة جديدة.

ال addbeg() الوظيفة المحددة في التعليمات البرمجية الخاصة بك تقوم بما يلي:

  1. يحدد متغير مؤقت x.
  2. يخصص مساحة لعقدة جديدة.
  3. إدخال عدد صحيح (%d رمز ل scanf) ويخزنها فيه x.
  4. يخزن القيمة التي تم حفظها فيها x في حقل البيانات للعقدة المخصصة حديثًا.
  5. يخزن "الرأس" القديم للقائمة المشار إليها بواسطة المتغير 'list"كرابط في العقدة المخصصة حديثًا.
  6. يضبط العقدة الجديدة لتكون الرأس الجديد للقائمة المخزنة في المتغير 'list'.

إنه تطبيق أساسي جدًا لقائمة مرتبطة (http://en.wikipedia.org/wiki/Linked_list) من الأعداد الصحيحة.

نصائح أخرى

والسطر الأول: تخصيص الذاكرة لعقدة إضافية واحدة من قائمة

والسطر الثاني: إرفاق القائمة الحالية باعتبارها استمرارا بعد هذا العنصر

.

والسطر الثالث: جعل العنصر الحالي بداية من قائمة

.

ودرجة الحرارة والقائمة ليست واضحة في addbeg، منذ انهم أعلن في main. أنها تحتاج إما لتمريرها في لaddbeg أو أعلن خارج الرئيسي (العالمي، يوك).

وmalloc يخصص مساحة لعقدة جديدة.

temp->link = list

و

list = temp

ويجعل تلك العقدة الجديدة رأس القائمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top