المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : سؤال في linked list ارجو الرد دي اول مشاركه



الحلوةالحلوة
24-02-2005, 06:18 PM
بغة السي اذا كان عندي لستتين كالتالي
linked list no.1= 1,2,,3,4

linked list no.2= 1,2,5,6,7,

أريد جمعهم بحيث ان العناصر المكررة تظهر مرة واحده كالتالي
linked list no.3= 1,2,3,4,5,6,7


السؤال التاني
هو بالعكس اذا كان عندنا نفس الستتين اريد ان تظهر العناصر المشتركه فقط كالتالي
linked list no.3= 1,2,



وشكرا لكم ارجو مساعدتي بسرعه الجواب بلغة السي

ibn_alqalam
24-02-2005, 09:51 PM
ليس من قصدي حل واجبك المدرسي لذا ساقوم فقط بتوضيح سؤالك للاجابة البحتة.

القائمة المربطة او متصلة او كما تسمى بالانجليزية Linked List، ماهي الا طريقة رمزية تجريدية لتمثيل البيانات في ذاكرة الحاسوب. تلك القائمات المربطات لها هذه الخواصي:

1)هناك وعاء لاحتواء قيمة، اي قيمة من اي نوع نختاره.
2) هناك طريقة للوصول الى الوعاء التالي.

فقط :-)

سنعود الى البرمجة لاحقا، دعنا نتامل البيانات قليلا لكي نبحث عن ونبحث عن تشكيلات قد تفوتنا ...

همممم، اعتقد ان مطلوب المسالة يشبه عمليات المجموعات كثيرا!
جمع قائمتين مربطتين مع حفظ العناصر المتكررة ماهي الاعملية الاتحاد في المجموعات! كذلك الجمع مع الحذف، عملية التقاطع بعينها.

دعنا نتخيل القائمتان كطابورين، بهذه الطريقة نوفي خاصيتا القائمات المتصلات:

1) لاداعي لمحتوي لان الارقم ترمز قيمتها. ليس هناك متغير جبري كل مالديك ارقام حقيقية.

2) في صيغة طابور يوجد العنصر "التالي" خلف العنصر الحالي!


حاول ان تتخيل الطابورين وسوف تاتي بالخوارزميتين بنفسك. لاداع للC بعد، يمكنك حل هذه بحفنة من الكرات الملونة.

Arsene Lupin
27-02-2005, 03:39 PM
دائما فكر في الخوارزميات. لازم تبحثين عن algorithm معين يحل لك المسأله.. و دائما طريقة الحل ممكن تطبقينها على أي لغه.


السؤال الأول:



for ( i from 0 to list1's end){

if list1[i] is not in list3: then add it to list3

}

for ( i from 0 to list2's end){

if list2[i] is not in list3: then add it to list3

}

هذا طبعا شرح للكود... ما عليك الا انك تحولينه لكود سي ++ بطريقتك.



السؤال الثاني:

for (i from 0 to list1's end) {

if list1[i] is in list2: then add it to list3

}

بيبسيه
27-02-2005, 10:31 PM
بالفقره الاولى اول شي تنقلين كل الالمينت من الليست الاولى للست الثالثه(الجديده) بعد كذ اتجين للست الثانيه وتبدين تاخذين عنصر عنصر تختبيرين اذا موجود باللست الثالث تاخذين العنصر اللي بعده اذا مالقى(عمليه بحث طبعا تصير بفانكشن اسهل)يضيف الالمنت للست الثالثه

اما الفقره الثانيه ياخذ العنصر من اللست الاول ويبحث عنه باللست الثاني اذا لقاه (استخدمي if )يحطه بالليست الثالثه اذا مالقاه يمشي للي بعده


اتمنى اكون افدتك

الحلوةالحلوة
28-02-2005, 01:19 AM
شكرا لك اختي بيبسية ممكن تساعديني في الكود دا باحاول اني اضع العناصر في اللسته التانية في اللستة التالته و مانفع في خطأ مني عارفة ايش هو

ptr=head;
headu=new struct rec;
headu->next=NULL;
ptr3=headu;
for(y=0;y<f+h;y++)
{l3=new struct rec;
if(l3==NULL)
printf("\n empty 2");
else
{l3->next=NULL;
if(ptr->next==NULL)
printf("\n empty 2");
else
while(ptr->next!=NULL)
{ptr->next=ptr3->next;
ptr=ptr->next;
ptr3=ptr3->next;}}}

بيبسيه
03-03-2005, 05:42 PM
من عيوني بس ممكن تستنين لحد بكره لاني قاعده اسوي البروجكت حقي والمشكله ان البرنامج مو راضي يفتح

phiras
05-03-2005, 06:18 AM
HUM, Data Structure Algorithms,
I'll write an abstract Algorithm for you :
1-

l1 is a Linked List
l2 is a Linked List
l3 is a Linked List
l3 = l1
for each element e in l2 do
if e not in l1 then
l3.add(e);
2-


l1 is a Linked List
l2 is a Linked List
l3 is a Linked List
l3 = l1
for each element e in l2 do
if e not in l1 then
l3.Delete(e);

all you have to do now is Just to write good Implementation for the Linked List ADT.:icon6: