• Home
  • /
  • Blog
  • /
  • 2 عمليات قائمة مرتبطة أساسية لميزة الأطفال

2 عمليات قائمة مرتبطة أساسية لميزة الأطفال

عمليات القائمة المرتبطة الأساسية لميزة الأطفال

This post is also available in: English (الإنجليزية) हिन्दी (الهندية)

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

2 عمليات القوائم المرتبطة الأساسية

فيما يلي العمليات الأساسية التي تدعمها قائمة.

  • الإدراج – يضيف عنصرًا إلى القائمة.
  • حذف – يحذف عنصرًا من القائمة.

إدخال عقدة

الإدراج هو عملية إضافة عقدة جديدة إلى قائمة مرتبطة موجودة. يمكن إدراج عنصر جديد إما في بداية قائمة مرتبطة أو في نهاية القائمة المرتبطة أو أي موضع في القائمة المرتبطة.

إدراج عقدة – قائمة مرتبطة بسيطة

الطريقة المتبعة لإدراج عقدة جديدة في قائمة مرتبطة بسيطة هي

  • اجتياز القائمة المرتبطة حتى الموضع p1 (p1 هو الموضع حيث يتم إدراج العقدة الجديدة).
  • بمجرد اجتياز جميع العقد حتى p1 ، قم بتخصيص الذاكرة والبيانات المقدمة إلى العقدة الجديدة.
  • ضع المؤشر التالي للعقدة الجديدة على العقدة التالية.
  • أشر النقطة التالية من العقدة الحالية إلى العقدة الجديدة.
العمليات في القائمة المرتبطة
الإدراج – قائمة مرتبطة بسيطة

رمز للإدراج في قائمة مرتبطة بسيطة في ++C.

struct Node
{
   int data;
   struct Node *next;
};
void insert(struct Node* prev_node, int node_data)
{
if (prev_node == NULL)
{
   cout<<"the given previous node is required,cannot be NULL"; return; }
   struct Node* newNode =new Node;
   newNode->data = node_data;
   newNode->next = prev_node->next;
    prev_node->next = newNode;
}
int main()
{
struct Node* head = NULL;
insert(head->next, 50);
return 0;
}

إدراج عقدة – قائمة مرتبطة بشكل مضاعف

الأسلوب المتبع لإدراج عقدة جديدة في قائمة مرتبطة بشكل مزدوج هو

  • قم بالانتقال إلى موضع العقدة (p – 1) في القائمة ، حيث يمثل p موضع الإدراج.
  • قم بإنشاء عقدة جديدة وقم بتعيين البيانات إلى حقل البيانات الخاص بها.
  • قم بتوصيل العنوان التالي للعقدة الجديدة بالعقدة المشار إليها بالعنوان التالي للعقدة (ص -1).
  • قم بتوصيل حقل العنوان السابق للعقدة الجديدة بالعقدة (p – 1).
  • تحقق مما إذا كان العنوان التالي للعقدة (p – 1) ليس NULL ، ثم قم بتوصيل العنوان السابق للعقدة المجاورة للعقدة (p – 1) بالعقدة الجديدة.
  • قم بتوصيل العقدة التالية (p – 1) بعقدة جديدة.
العمليات في القائمة المرتبطة
الإدراج – قائمة مرتبطة بشكل مضاعف

رمز للإدراج في قائمة مرتبطة بشكل مضاعف في ++C.

struct Node {
   int data;
   struct Node* next;
   struct Node* prev;
};
void insert(struct Node* prev_node, int new_data)
{
   if (prev_node == NULL) {
   cout<<"Previous node is required , it cannot be NULL";
   return;
}
   struct Node* newNode = new Node;
   newNode->data = new_data;
   newNode->next = prev_node->next;
   prev_node->next = newNode;
   newNode->prev = prev_node;
   if (newNode->next != NULL)
   newNode->next->prev = newNode;
}
int main() {
   struct Node* head = NULL;
   insert(head->next, 30);
   return 0;
}

حذف العقدة

الحذف هو عملية إزالة عقدة من قائمة مرتبطة موجودة. يمكن أن تكون العقدة المحذوفة إما في البداية أو في النهاية أو في أي موضع في القائمة المرتبطة.

حذف عقدة – قائمة مرتبطة بسيطة

الطريقة المتبعة لحذف عقدة من قائمة مرتبطة بسيطة هي

  • ابحث عن العقدة السابقة للعقدة المراد حذفها.
  • قم بتغيير العقدة التالية من العقدة السابقة.
  • ذاكرة خالية للعقدة المراد حذفها.
العمليات في القائمة المرتبطة
حذف – قائمة مرتبطة بسيطة

رمز للحذف في قائمة مرتبطة بسيطة في ++C.

struct node{
    int data;
    node* next;
};
void delete_node(node** head,int x){
    if((*head)->next==NULL){
        *head=NULL;
        return;
    }
    struct node* temp=*head;
    if(temp->data==x){
    	temp=temp->next;
    	*head=temp;
    	return;
    }
    while(temp){
    	if(temp->data==x){
    		temp->data=temp->next->data;
    		temp->next=temp->next->next;
    		break;
    	}
    	temp=temp->next;
    }
}
int main()
{
    struct node* n=NULL;
    delete_node(&n,2);
   return 0;
}

حذف عقدة – قائمة مرتبطة بشكل مضاعف

الأسلوب المتبع لحذف عقدة من قائمة مرتبطة بشكل مضاعف هو

  • اجتياز القائمة المرتبطة من الرأس حتى يتم الوصول إلى الموضع المطلوب (اجعله مؤقتًا).
  • قم بتعيين المؤشر التالي لدرجة الحرارة إلى المؤشر التالي للعقدة السابقة المؤقتة.
  • عيّن المؤشر السابق للدرجة الحرارة إلى المؤشر السابق للعقدة التالية للموظف المؤقت.
  • عقدة حرة مؤقتة.
العمليات في القائمة المرتبطة
حذف – قائمة مرتبطة بشكل مضاعف

رمز الحذف في قائمة مرتبطة بشكل مضاعف في ++C.

struct node {
   int data;
   struct node *prev;
   struct node *next;
};
void remove_data(int data) {
   int pos = 0;
   struct node *pre_node;
   if(head->data == data) {
      if(head->next != NULL) {
         head->next->prev = NULL;
         head = head->next;
         return;
      } else {
         head = NULL;
         return;
      }
   } else if(head->data != data && head->next == NULL) {
      printf("%d not found in the list\n", data);
      return;
   }
   current = head;
   while(current->next != NULL && current->data != data) {
      pre_node = current;
      current = current->next;
   }        
   if(current->data == data) {
      pre_node->next = pre_node->next->next;
      if(pre_node->next != NULL) {          // link back
         pre_node->next->prev = pre_node;
      } else
         last = pre_node;
      free(current);
   } else
      printf("%d not found in the list.", data);
}
int main() {
   remove_data(20);
   return 0;
}
{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
>