مشكور علي الشرح العظيم ده استفساري الميثود بتاعت insertbefore لو مفيش داتا هيخش في اول if اللي بتتشك ان الليست فاضية ويضيف النود ويخش كمان في if الثانية اللي بتتشك ان العنصر موجود فهيضيفه كمان فكده ضافه مرتين فالمفروض if الثانية تكون else
السلام عليكم ، دكتور محمد.. الله يعطيك العافيه ويجزيك الخير ،ويسهل لك كل صعب بحياتك ، مثل ماسهلت لنا دراستنا وساعدتنا ، من أول مادخلت الجامعه وقناتك مكان المساعده لي ، 💚شُكراً جزيلاً دكتور🌟🌻
يلي ما فهم ليش الدكتور عمل ال prev = delptr الوايل عم تدور فلما تصل للفة قبل الاخيرة وبما ان ال prev = delptr القيمة تبعا لح تصير 30 و وحتزيد قيمة ال delptr ,وتصير 40 بعدين لح يتحقق من الشرط للمرة الاخيرة ويقول هل delptr->data!=40 , اختل الشرط وبالتالي ال prev = 30 and delptr =40
السلام عليكم شكرا يا دكتور علي الشرح بس عندي تعليق صغير في الفانكشن بتاعت delete قبل ما يبدأ اتأكد ان الرقم الي المستخدم دخله موجود اصلا في list عشان امسحه ولا لا Isfound(); وشكرا لحضرتك ❤
الشرح مفيدجدا ماشاء الله بس احنا عندنا فالكيه بناخد حاجه ال linked list الي هو ال sursor وال prev pointer , دايما بيكونو موجودين وبنزودهم معانا ف اي كود فدول حاجه مختلفه عن دي ولا ايه؟
الاول : هي انك تكريت بوينتر داخل النود الاصلية (وهو عبارة عن بوينتر فقط ) الثانية : هي اني اكريت نود جديدة خالص من النود الاصلية وتبقي فيها نفس مميزات النود الاصلية زي انها تقدر تشيل الداتا والبوينتر نيكست بمعني اصح نسخة منو وطبعا" كلمة نيو تعني انك تروح تحجز مكان في الميموري للنود دي
اول واحده مش هينفع لانك عملت نود بس ملهاش اي لازمه لانك محجزتلهاش مكان ف الميموري لكن التانيه بتقولو انا هعمل نود اسمها new_node احجزي مكان ف الميموري ب نوع النود دي كدا ()new node كدا انت حجزت مكان ف الميموري ب نوع نود لو مثلا عايز تحجز مكان ب نوع integer تكتب بدل new node تكتب new int كدا انت بتحجز مكان ف الذاكره ب نوع العنصر الي انت هتحجزو
لما تيجي تعمل create لل list لازم الكود يكون بالشكل ده Node * newnode = new Node (); و ال constructor اللي اسمه Node لازم جواه تكتب data = 0 و Next = NULL
ممكن اقول نصيحه ارجو متفهمنيش غلط كتاب الشرح بيختلف من واحد للتانى ممكن كتاب انا اشوفه حلو ميناسبكش وممكن العكس ده متوقف على عوامل كتير مش هقدر اوضحها فى البوسط عموما فى كتاب اسمه grocking algorithms حلو للاساسيات وبسيط للفهم
كود البرنامج كامل
#include
using namespace std;
class Node
{
public:
int data;
Node* next;
Node()
{
data = 0;
next = NULL;
}
};
class Linkedlist
{
public:
Node* head;
Linkedlist()
{
head = NULL;
}
/*bool isempty()
{
if (head == NULL)
return true;
else
return false;
}*/
bool isempty()
{
return (head == NULL);
}
void InsertFirst(int newvalue)
{
Node* newnode= new Node();
newnode->data = newvalue;
if (isempty())
{
newnode->next = NULL;
head = newnode;
}
else
{
newnode->next = head;
head = newnode;
}
}
void display()
{
Node* temp = head;
while (temp != NULL)
{
cout data next;
}
cout next;
}
return counter;
}
bool isfound(int key)
{
bool found = false;
Node* temp = head;
while (temp != NULL)
{
if (temp->data == key)
found = true;
temp = temp->next;
}
return found;
}
void insertbefore(int item, int newvalue)
{
if (isempty())
InsertFirst(newvalue);
if (isfound(item))
{
Node* newnode = new Node();
newnode->data = newvalue;
Node* temp = head;
while (temp != NULL && temp->next->data != item)
{
temp = temp->next;
}
newnode->next = temp->next;
temp->next = newnode;
}
else
{
cout next != NULL)
{
temp = temp->next;
}
Node* newnode = new Node();
newnode->data = newvalue;
temp->next = newnode;
newnode->next = NULL;
}
void Delete(int item)
{
if (isempty())
cout data == item)
{
head = head->next;
delete delptr;
}
else
{
Node* prev = NULL;
delptr = head;
while (delptr->data != item)
{
prev = delptr;
delptr = delptr->next;
}
prev->next = delptr->next;
delete delptr;
}
}
};
int main()
{
Linkedlist lst;
if (lst.isempty())
cout
جزاك الله خير يا دكتور
ع
مشكور علي الشرح العظيم ده
استفساري الميثود بتاعت insertbefore
لو مفيش داتا هيخش في اول if اللي بتتشك ان الليست فاضية ويضيف النود
ويخش كمان في if الثانية اللي بتتشك ان العنصر موجود فهيضيفه كمان فكده ضافه مرتين فالمفروض if الثانية تكون else
الله يعطيك العافية لو تثبت التعليق في البداية يكون افضل
شلون انسخه ؟؟؟؟؟
بجد دي داتا استركتشر اي السهوله دي دا انا كنت خلاص اتعقدت من البروجرامنج بسببها جزاك الله كل خير ويسر لك كل صعب ❤
السلام عليكم ، دكتور محمد..
الله يعطيك العافيه ويجزيك الخير ،ويسهل لك كل صعب بحياتك ، مثل ماسهلت لنا دراستنا وساعدتنا ، من أول مادخلت الجامعه وقناتك مكان المساعده لي ، 💚شُكراً جزيلاً دكتور🌟🌻
ربنا يكملها علي خير😍😍
ما شاء الله والله شرح عال العال 100% استمر
كنت ولا فاهمه الطبخة هلا صرت افهم الدنيا
اقسم بالله انك فنان
بارك الله فيك دكتورنا الغالي جعله الله في ميزان حسناتك
الله يرضى عليك يا رب
الشرح جميل اوى
بارك الله فيك يا دكتور وجزاك خيرا
ربنا يبارك في حضرتك بجد الواحد كان ضايع في linked list وشرحك مميز
الله يبارك في حضرتك يا دكتور
والله يعجز اللسان عن شكرك ❤
مو المفروض في الـDelete نتأكد اذا كان الـitem غير موجود او قيمه خطأ ؟
،وشكرا على الشرح ❤️
قمت بمسح عنصر دون أن ارى الفديو فقط من بداية شرح دون نظر إلى الكود الذي كتبته
الحمد لله هذا بفضلك يا استاذ وشكرا لك تحياااااتي لك
ربنا يبارك فى حضرتك يابشمهندس مصر والوطن العربي بيدعولك والله ياهندسه ياريت تكمل باقى الشروحات يابشمهندس ربنا يباركلك يارب ويجازيك خير يارب .
اشكرك وأرجو الاستمرا ر فى شرح الكورس
جزاك الله كل خير يا دكتور
الله يبارك في صحة حضرتك
ويجازيك خير علي ال حضرتك بتعملو
رائع دكتور بارك الله فيك ❤️
ربنا يباركلك ياهندسه
جزاك الله خيرًا ونفع بك ❤ اتمنى تشرح ال Heap
جزاكم الله خيرا ي دكتور شرح رائع جدا
يلي ما فهم ليش الدكتور عمل ال prev = delptr الوايل عم تدور فلما تصل للفة قبل الاخيرة وبما ان ال prev = delptr القيمة تبعا لح تصير 30 و وحتزيد قيمة ال delptr ,وتصير 40 بعدين لح يتحقق من الشرط للمرة الاخيرة ويقول هل delptr->data!=40 , اختل الشرط وبالتالي ال prev = 30 and delptr =40
كل الشكر لحضرتك ❤❤❤❤
جزاك الله خير الله يعطيك العافية دكتور محمد
تسلم دكتور
رائع
شكرا
كل الشكر لك
يا هندسه ممكن تشرح ازاي نعمل method بتعمل copy ل ال list دي
السلام عليكم شكرا يا دكتور علي الشرح بس عندي تعليق صغير
في الفانكشن بتاعت delete قبل ما يبدأ اتأكد ان الرقم الي المستخدم دخله موجود اصلا في list عشان امسحه ولا لا
Isfound();
وشكرا لحضرتك ❤
الشرح مفيدجدا ماشاء الله بس احنا عندنا فالكيه بناخد حاجه ال linked list
الي هو ال sursor وال prev pointer , دايما بيكونو موجودين وبنزودهم معانا ف اي كود فدول حاجه مختلفه عن دي ولا ايه؟
هو بيتعامل ع single Linkedlist لكن الثاني اسمه doubly linkedlist
ليه في النسيرت بيفور مقدرش احط نود جديدة قبل اخر نود عندي؟؟
يا دكتور وانا بنفذ الكود ظهر المشكلة دى واخدت الكود كوبى من حضرتك وبردو نفس المشكلة
C6011: dereferencing NULL pointer temp
كود البرنامج كامل موجود في الكومنتات
اخوي بشر عرفت حل المشكلة ولا باقي لي يومين احاول فيها
يا الدكتورالكود بعطيني غلط لما اعمل insert before وعملت نسخ لوكدك ع الفاضي
نرجو شرح كورس الخوارزميات
فى كورس خوارزميات بيترفع حاليا في قناتى إلى الآن ٦ فيديوهات تقدر تشوفهم وتقيم الشرح 🤍
تشرفونى إذا اشتركتوا 🧡
شكرا 🤍
احنا مشتركين من ٣ سنين
ممكن نختصر دالة الحذف
void Delete(int val)
{
Node*temp=head;
while(true)
{
if(temp->next->data==val)
{
Node*ptr=temp->next;
temp->next=temp->next->next;
delete ptr;
break;
}
temp=temp->next;
}
}
صح عليك
جربت اشغل البرنامج بكل الدوال ولكن لم يعمل بشكل منطقي هل هذا طبيعي ولا لا ؟
هو اي الفرق بين
Node* new_node
Node* new_node=new Node()
السطر الاول غلط و الكود مش هيشتغل صح معاك
الكود التاني هو الطريقة الصح لعمل create لل list
الاول : هي انك تكريت بوينتر داخل النود الاصلية (وهو عبارة عن بوينتر فقط )
الثانية : هي اني اكريت نود جديدة خالص من النود الاصلية وتبقي فيها نفس مميزات النود الاصلية زي انها تقدر تشيل الداتا والبوينتر نيكست بمعني اصح نسخة منو وطبعا" كلمة نيو تعني انك تروح تحجز مكان في الميموري للنود دي
اي الفكره اني اني اكريت نود جديده خالص @@uosif_heikal
اول واحده مش هينفع لانك عملت نود بس ملهاش اي لازمه لانك محجزتلهاش مكان ف الميموري لكن التانيه بتقولو انا هعمل نود اسمها new_node احجزي مكان ف الميموري ب نوع النود دي كدا ()new node كدا انت حجزت مكان ف الميموري ب نوع نود لو مثلا عايز تحجز مكان ب نوع integer تكتب بدل new node تكتب new int كدا انت بتحجز مكان ف الذاكره ب نوع العنصر الي انت هتحجزو
سلام عليكم هل codebloks لا يدعم data structures لأنه لا بعمل معي في linked list
عندما يدخل في دالة
InsertFirst
يخرج
راجع الكودالخاص بيك لاني بستخدم codebloks وشغال معايا تمام
@@abdelrahmanelsaeed5897 akhi 3ndak whatsap tichra7li jazaka laho khayran
لما تيجي تعمل create لل list لازم الكود يكون بالشكل ده
Node * newnode = new Node ();
و ال constructor اللي اسمه Node لازم جواه تكتب data = 0 و Next = NULL
ممكن الكود يا باشمهندس
21:55 / 56:54
31:36 / 56:54
دكتور ممكن من فضلك تنصحني بمراجع فيها مشاكل في هياكل البيانات وشكرا مسبقا
ممكن اقول نصيحه ارجو متفهمنيش غلط كتاب الشرح بيختلف من واحد للتانى ممكن كتاب انا اشوفه حلو ميناسبكش وممكن العكس ده متوقف على عوامل كتير مش هقدر اوضحها فى البوسط عموما فى كتاب اسمه grocking algorithms حلو للاساسيات وبسيط للفهم
9:20 / 56:54
عشان ال fun دي مش شغاله عندي ف دي طريقه تانيه ليها
void insert(int item, int newvalue)
{
Node* NewNode = new Node();
NewNode->Data = newvalue;
Node* temp = head; // to taverse
Node* beforeItem = nullptr; // to insert befor item
if(head == nullptr)
{
cout next;
}
if(beforeItem==nullptr)// in begin (while not used)
{
NewNode->next = head;
head = NewNode;
}
else
{
NewNode->next = temp;
beforeItem->next = NewNode;
}
}
19:33
26:43 / 56:54
51:37 / 56:54
51:37 / 56:54