Computer >> Máy Tính >  >> Lập trình >> lập trình C

Chương trình C để tìm độ dài của danh sách liên kết

Danh sách được liên kết sử dụng phân bổ bộ nhớ động, tức là chúng phát triển và thu nhỏ tương ứng. Chúng được định nghĩa là một tập hợp các nút. Ở đây, các nút có hai phần, đó là dữ liệu và liên kết. Trình bày dữ liệu, liên kết và danh sách được liên kết được đưa ra dưới đây -

Chương trình C để tìm độ dài của danh sách liên kết

Các loại danh sách được liên kết

Danh sách được liên kết có bốn loại, như sau -

  • Danh sách được liên kết đơn / lẻ
  • Danh sách được liên kết đôi / liên kết đôi
  • Danh sách liên kết đơn hình tròn
  • Danh sách liên kết kép hình tròn

Logic mà chúng tôi sử dụng để tìm độ dài của danh sách được liên kết bằng cách sử dụng phương pháp đệ quy là -

int length(node *temp){
   if(temp==NULL)
      return l;
   else{
      l=l+1;
      length(temp->next);
   }
}

Chương trình

Sau đây là chương trình C để tìm độ dài của danh sách liên kết -

#include <stdio.h>
#include <stdlib.h>
typedef struct linklist{
   int data;
   struct linklist *next;
}node;
int l=0;
int main(){
   node *head=NULL,*temp,*temp1;
   int len,choice,count=0,key;
   do{
      temp=(node *)malloc(sizeof(node));
      if(temp!=NULL){
         printf("\nenter the elements in a list : ");
         scanf("%d",&temp->data);
         temp->next=NULL;
         if(head==NULL){
            head=temp;
         }else{
            temp1=head;
            while(temp1->next!=NULL){
               temp1=temp1->next;
            }
            temp1->next=temp;
         }
      }else{
         printf("\nMemory is full");
      }
      printf("\npress 1 to enter data into list: ");
      scanf("%d",&choice);
   }while(choice==1);
   len=length(head);
   printf("The list has %d no of nodes",l);
   return 0;
}
//recursive function to find length
int length(node *temp){
   if(temp==NULL)
      return l;
   else{
      l=l+1;
      length(temp->next);
   }
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

Run 1:
enter the elements in a list: 3
press 1 to enter data into list: 1
enter the elements in a list: 56
press 1 to enter data into list: 1
enter the elements in a list: 56
press 1 to enter data into list: 0
The list has 3 no of nodes
Run 2:
enter the elements in a list: 12
press 1 to enter data into list: 1
enter the elements in a list: 45
press 1 to enter data into list: 0
The list has 2 no of nodes