C Tutorial/Data Structure/Linked list


Deprecated: Constant E_STRICT is deprecated in /var/www/cppe.ru/www/includes/exception/MWExceptionHandler.php on line 179

Deprecated: Creation of dynamic property PPDStack::$accum is deprecated in /var/www/cppe.ru/www/includes/parser/Preprocessor_DOM.php on line 803

Deprecated: Constant E_STRICT is deprecated in /var/www/cppe.ru/www/includes/exception/MWExceptionHandler.php on line 179

Deprecated: Constant E_STRICT is deprecated in /var/www/cppe.ru/www/vendor/mediawiki/at-ease/src/Functions.php on line 48
Материал из C\C++ эксперт
Перейти к: навигация, поиск

Inserting a node by using recursive programs

# include <stdio.h>
   # include <stdlib.h>
   struct node
   {
      int data;
      struct node *link;
   };
   struct node *insert(struct node *p, int n)
   {
      struct node *temp;
      if(p==NULL)
      {
         p=(struct node *)malloc(sizeof(struct node));
         if(p==NULL)
         {
             printf("Error\n");
             exit(0);
         }
         p-> data = n;
         p-> link = NULL;
      } else{
         p->link = insert(p->link,n);
      }
      return (p);
   }
   void printlist ( struct node *p )
   {
         printf("The data values in the list are\n");
         while (p!= NULL)
         {
            printf("%d\t",p-> data);
            p = p-> link;
         }
   }
   void main()
   {
         int n =10;
         int x;
         struct node *start = NULL ;
         while ( n-- > 0 )
         {
            start = insert ( start, n );
         }
         printf("The created list is\n");
         printlist ( start );
   }
The created list is
The data values in the list are
9       8       7       6       5       4       3       2       1       0

Linked Lists

  1. Each element in a linked list can be placed anywhere in memory.
  2. The elements are linked with each other using an explicit link field.
  3. To access the element you can use the starting pointer of the list.


# include <stdio.h>
   # include <stdlib.h>
   struct node
   {
       int data;
       struct node *link;
   };
   struct node *insert(struct node *p, int n){
      struct node *temp;
      if(p==NULL){
          p=(struct node *)malloc(sizeof(struct node));
         if(p==NULL) {
             printf("Error\n");
             exit(0);
         }
         p-> data = n;
         p-> link = p;
      } else {
         temp = p;
         while (temp-> link != p)
            temp = temp-> link;
            temp-> link = (struct node *)malloc(sizeof(struct node));
            if(temp -> link == NULL){
               printf("Error\n");
               exit(0);
            }
            temp = temp-> link;
            temp-> data = n;
            temp-> link = p;
          }
          return (p);
   }
   void printlist ( struct node *p )
   {
      struct node *temp;
      temp = p;
      printf("The data values in the list are\n");
      if(p!= NULL)
      {
            do
            {
                printf("%d\t",temp->data);
                temp=temp->link;
            } while (temp!= p);
      }
      else
         printf("The list is empty\n");
   }
   void main()
   {
      int n;
      int x;
      struct node *start = NULL ;
      start = insert ( start, 1 );
      start = insert ( start, 2);
      start = insert ( start, 3 );
      start = insert ( start, 4 );                          
      printf("The created list is\n");
      printlist ( start );
   }
The created list is
The data values in the list are
1       2       3       4