بعد غياب طويل نعود اليوم بموضوع مهم في هياكل البيانات(data structures)هو القوائم المرتبطة «linkedList»
في عالم البرمجة، يُعد اختيار بنية البيانات المناسبة أمرًا بالغ الأهمية لبناء تطبيقات فعّالة وقابلة للتطوير. توفر جافا مجموعة غنية من هياكل البيانات المُدمجة،ومن بينها القائمة المرتبطة(LinkedList) التي تتميز بديناميكيتها وتعدد استخداماتها.
هو عبارة عن بنية بيانات خطية، تتكون من سلسلة من العقد«nodes» المترابطة مع بعضها البعض بواسطة pointer حيث أن العقدة الأولى تسمى الHeadوهي اهم عقد لانها تحدد بداية الLinkedList.
وتتكون العقدة من من جزئين هما القيمة «data»و المؤشر«pointer»وهو المسؤول عن عملية الربط بين تلك العقد واخر عقدة يكون مؤشرها يساوي null.
• ديناميكية الحجم.
• هيكل بسيط.
•صعوبة الوصول للعناصر.
• تأخذ مساحة اكبر من array بسبب حجز مواقع للمؤشرات.
يتبع....
في عالم البرمجة، يُعد اختيار بنية البيانات المناسبة أمرًا بالغ الأهمية لبناء تطبيقات فعّالة وقابلة للتطوير. توفر جافا مجموعة غنية من هياكل البيانات المُدمجة،ومن بينها القائمة المرتبطة(LinkedList) التي تتميز بديناميكيتها وتعدد استخداماتها.
ماهي القوائم المرتبطة«LinkedList»
هو عبارة عن بنية بيانات خطية، تتكون من سلسلة من العقد«nodes» المترابطة مع بعضها البعض بواسطة pointer حيث أن العقدة الأولى تسمى الHeadوهي اهم عقد لانها تحدد بداية الLinkedList.
وتتكون العقدة من من جزئين هما القيمة «data»و المؤشر«pointer»وهو المسؤول عن عملية الربط بين تلك العقد واخر عقدة يكون مؤشرها يساوي null.
الشكل العام لبنية ال LinkedList بلغة جافا :
class Node {
int data;
Node next;
Node(int data) {
this.data = data;
this.next = null;
}
}مميزات LinkedList :
• ديناميكية الحجم.
• هيكل بسيط.
عيوبها :
•صعوبة الوصول للعناصر.
• تأخذ مساحة اكبر من array بسبب حجز مواقع للمؤشرات.
يتبع....
🔥4
ي المنشور السابق تعرفنا على الشكل العام لبنية الLinkedList وكان نوع البيانات int واذا اردنا ان نخزن نص يجب ان تغير نوع البيانات الى String ولاكن يمكن ان تجعل نوع البيانات اكثر ديناميكية من خلال جعل نوع البيانات Generics كالتالي :
ال() public Node هي دالة تكون نفس اسم الكلاس وتسمى كونستركتور.
العمليات الاساسية للتعامل مع LinkedList:
1- الإضافة« insert » وهي ثلاث انواع:
• الإضافة العادية « Append »
وهي إضافة العنصر لاخر عقدة في list واذا كانت الlist فارغة يتم سيكون هذا العنصر هو head اما اذا كانت ليست فارغة فسنحتاج لتيار يمشي على جميع العقد وهو «current» حتى يصل الى العقدة الاخير ويقوم بإضافة هذا العنصر بعد اخر عقدة نمثل هذا في كود لانفهم اكثر .
• الإضافة للبداية « InsertFirst »
إضافة العنصر لبداية ال LinkedList اي جعل هذا العنصر هو head.
• الإضافة في مكان معين« InsertatPosition »
وهنا سنحتاج الى بيانات العقدة و المكان الذي يريد ان تكون موجوده فيه مثل.
2- الحذف« delete »
حذف عقدة معين من داخل LinkedList
3- طباعة العناصر« display »
4- الربط «merge»
عملية يتم من خلاله ربط اثنتين من LinkedList داخل LinkedList واحدة.
class Node<T> {
T data;
Node next;
public Node(T data) {
this.data = data;
this.next = null;
}
}ال() public Node هي دالة تكون نفس اسم الكلاس وتسمى كونستركتور.
العمليات الاساسية للتعامل مع LinkedList:
1- الإضافة« insert » وهي ثلاث انواع:
• الإضافة العادية « Append »
وهي إضافة العنصر لاخر عقدة في list واذا كانت الlist فارغة يتم سيكون هذا العنصر هو head اما اذا كانت ليست فارغة فسنحتاج لتيار يمشي على جميع العقد وهو «current» حتى يصل الى العقدة الاخير ويقوم بإضافة هذا العنصر بعد اخر عقدة نمثل هذا في كود لانفهم اكثر .
class LinkedList{
Node head ;// عقدة تمثل بداية القائمة
public<T> void insert(T element){
Node node = new Node(element);//تعريف العقدة التي سيتم اضافتها
if(head == null) // فحص ان القائمة فارغة
head = node;
else
{
Node current = head ;// يبدأ هذا المتغير من head
while(current.next != null )// loop لكي يمر على جميع العقد
current = current. next;
current.next = n;//المؤشر تبع اخر عقدة بيكون يشير الى العقدة الجديد
}
}
}• الإضافة للبداية « InsertFirst »
إضافة العنصر لبداية ال LinkedList اي جعل هذا العنصر هو head.
public void InsertFirst(T element) {
Node node = new Node (element);
node.next = head;
head = node;
}• الإضافة في مكان معين« InsertatPosition »
وهنا سنحتاج الى بيانات العقدة و المكان الذي يريد ان تكون موجوده فيه مثل.
public void InsertatPosition(T element , int position){
Node node = new Node (element);
if (position == 0){
InsertFirst(element);// نضيفة بواسطة دالة الاضافة للبداية
return //للخروج من الدالة
}
Node current = head;
int counter = 1;
while(current !=null && counter < position-1){
current = current. next;
counter ++;
}
if(current == null ){
System. out. println("position is not found ! ");
return}
//inserttge new node
node. next = current. next;
current. next = node;
}2- الحذف« delete »
حذف عقدة معين من داخل LinkedList
public void delete(T element) {
if(head == null ) return;
if(head.data == element){
head = head. next;
return;
}
Node current = head;
while(current.next != null){
if(current.next.data == element )
current.next = current. next. next;
return;
}
current = current. next ;
}3- طباعة العناصر« display »
public void InsertFirst(T element) {
Node current = head;
while (current != null){
System. out. println(current.dat+" —» ");
current = current. next ;
}
System. out. println(" null ");
}4- الربط «merge»
عملية يتم من خلاله ربط اثنتين من LinkedList داخل LinkedList واحدة.
public void InsertFirst(LinkedList list2 ) {
if(head == null ){
head = list2.next ;
return ;
}
Node current = head;
while (current.next != null ){
current = current. next.;
}
current. next = list2.haed;
}🔥3
🇾🇪
سبتمبر عيد الثورة والنور والفخر، عيد حرية اليمن وكرامة شعبه، كل عام وأنتوا يا أصحابي وأهلي وكل يمني حر بألف خير، وكل عام واليمن الحبيب شامخ وعزيز، ومن قلب تعز لآخر قرية في اليمن نقول (عيد سبتمبر مجيـــــــــــد)
ويارب يحفظ يمننا الغالي ويرجع له الأمن والنصر والعزة ونكون يداً واحده ♥️
26 مجيد ❤️
سبتمبر عيد الثورة والنور والفخر، عيد حرية اليمن وكرامة شعبه، كل عام وأنتوا يا أصحابي وأهلي وكل يمني حر بألف خير، وكل عام واليمن الحبيب شامخ وعزيز، ومن قلب تعز لآخر قرية في اليمن نقول (عيد سبتمبر مجيـــــــــــد)
ويارب يحفظ يمننا الغالي ويرجع له الأمن والنصر والعزة ونكون يداً واحده ♥️
26 مجيد ❤️
❤🔥7
𝐈𝐓𝐂𝐎𝐃𝐄
طرق تركيب RJ45 @Qu_s78
RJ = Registered Jack
تعلمت درسًا من البرمجة والحياة هو:
أحيانًا الحل الأذكى هو عدم فعل شيء! 🎯
كود حذف العناصر المتكرره في مصفوفة ثنائي البعد وإعادة ترتيب المصفوفة👇
void skipelement(int arr[], int elementdel, int skip){
int counter=0;
for(int i =0; i<arr.length;i++){
if(arr[i] == elementdel){
counter++;
if(counter != skip)
arr[i] = 0;
}
}وهذا طريقة اخرى لدالة حذف التكرارات مع تخطي موقع معين.
ويوجود اكثر من طريقة لكتابة هذا الدالة.
🔥1
Transactions_and_Concurrency_Control.pdf
6.3 MB
لو تشتغل على جافا، أنصحك تقرأ آخر إصدار من كتاب “Troubleshooting Java”.
الكتاب مليان أشياء عملية: من أفضل ممارسات الـdebugging، إلى الـlogging، الـtracing، الـtelemetry، نموذج الذاكرة في جافا، منع الـdeadlocks، وكمان الـprofiling والـsampling.
قراءة ممتازة لو تحب تفهم وش يصير تحت غطاء الـJVM وكيف تلاقي المشاكل بسرعة في الإنتاج.
الكتاب مليان أشياء عملية: من أفضل ممارسات الـdebugging، إلى الـlogging، الـtracing، الـtelemetry، نموذج الذاكرة في جافا، منع الـdeadlocks، وكمان الـprofiling والـsampling.
قراءة ممتازة لو تحب تفهم وش يصير تحت غطاء الـJVM وكيف تلاقي المشاكل بسرعة في الإنتاج.
1❤2
احد طرق مكافحة الابتز١ز
يمن موبايل Yemen Mobile تقدم
خدمة مهمة جدا وخاصة للنساء ممن تذهب تعبي رصيد وتعطي رقمها لمن يقوم بالتعبئة لها ويؤذيها بعد ذلك
يمن موبايل لديها خدمة طلب عبر ارسال "رقمي" الى الرقم 1003
ويوصلك رقم حساب مكون من عشرة ارقام يبدأ بـ 97 ويمكنك استخدامه عند شحن رصيد من صاحب نقطة تعبئة رصيد أو غيره بدلا من أن تعطيه رقمك تعطيه هذا الرقم
كما موضح في الصورة
خاصة للنساء... وااضح
يمن موبايل Yemen Mobile تقدم
خدمة مهمة جدا وخاصة للنساء ممن تذهب تعبي رصيد وتعطي رقمها لمن يقوم بالتعبئة لها ويؤذيها بعد ذلك
يمن موبايل لديها خدمة طلب عبر ارسال "رقمي" الى الرقم 1003
ويوصلك رقم حساب مكون من عشرة ارقام يبدأ بـ 97 ويمكنك استخدامه عند شحن رصيد من صاحب نقطة تعبئة رصيد أو غيره بدلا من أن تعطيه رقمك تعطيه هذا الرقم
كما موضح في الصورة
خاصة للنساء... وااضح
👍3
#نصائح_برمجية
كل سطر Code تكتبه اليوم هو خطوة نحو منتج أفضل،
تجربة مستخدم أنعم،
أو حل أكثر ذكاءً.
حتى لو كانت المهمة بسيطة،
نفّذها بإتقان — لأن التفاصيل الصغيرة هي اللي تصنع الفرق الكبير في البرمجة. ابدأ يومك بشغف،
واكتب كودك كأنك تبني شيئ يدوم.
🙂البرمجة_تفكير وابتكار_مش_نسخ_وحفظ_اكواد_#
كل سطر Code تكتبه اليوم هو خطوة نحو منتج أفضل،
تجربة مستخدم أنعم،
أو حل أكثر ذكاءً.
حتى لو كانت المهمة بسيطة،
نفّذها بإتقان — لأن التفاصيل الصغيرة هي اللي تصنع الفرق الكبير في البرمجة. ابدأ يومك بشغف،
واكتب كودك كأنك تبني شيئ يدوم.
🙂البرمجة_تفكير وابتكار_مش_نسخ_وحفظ_اكواد_#
👍1