在链接列表中找到最大和最小的数字。
#初学者 #c #linkedlist

对于给定的链接列表,您应该编写两个单独的功能,这些功能在链接列表中找到最大和最小的数字并打印两个数字。

示例1:
输入:4 6 2 8 1
输出:最大数字:8
输出:最小数字:1

示例2:
输入:4 5 9 8 2
输出:最大数字:9
输出:最小数字:2

找到最大数量的步骤:

  • 将整数变量max初始化为INT_MIN

  • 使用临时指针temp开始穿越链接列表,并将链接列表中的每个数据元素与变量max进行比较,直到链接列表的结束。

  • 如果当前节点的数据大于max的值,则将当前节点数据的值存储到max中。

  • 最后,打印包含链接列表最大数量的可变max的值。

找到最小数字的步骤:

  • 将整数变量min初始化为INT_MAX

  • 使用临时指针temp开始穿越链接列表,并将链接列表中的每个数据元素与变量min进行比较,直到链接列表的结束。

  • 如果当前节点的数据小于min的值,则将当前节点数据的值存储到min中。

  • 最后,打印包含链接列表的最小数量的可变min的值。

注意:我们正在使用int_max,因为所有数据元素都比此元素要少,而且INT_MIN,因为所有数据元素都大于此。使用这两个宏我们的发现变得非常简单。

C程序找到了链接列表中最大和最小的数字。

#include <stdio.h>
#include <stdlib.h> 
#include <limits.h>

struct node
{
    int data;
    struct node * next;
};

void displayLL(struct node * head)
{
    struct node * temp;
    temp = head;
    temp=head;
    while(temp!=0)
    {
       printf("%d ",temp->data);
       temp = temp->next;
    }
}
void small(struct node *head)
{
   struct node *temp = head;
   int min;
   min = INT_MAX;

   while(temp != NULL)
   {
       if(min > temp->data)
       {
           min = temp->data;
       }
       temp = temp->next;
   }
   printf("\n--------------------------------\n");
   printf("Smallest number of linked list : %d", min);
}

void large(struct node *head)
{
   struct node *temp = head;
   int max;
   max = INT_MIN;

   while(temp != NULL)
   {
       if(max < temp->data)
       {
           max = temp->data;
       }
       temp = temp->next;
   }
   printf("\n--------------------------------\n");
   printf("Largest number of linked list : %d", max);
}

int main()
{
   struct node *head = 0, *newnode, *temp; 
   int n, choice, newdata;

// Create Linked List // 

   printf("Enter the number of nodes in the list : ");
   scanf("%d", &n);

   if(n == 0)
    {
      printf("--------------------------------\n");
      printf("Linked list cannot be empty");
      exit(0);
    }

   for(int i = 1; i<=n; i++)
   {
     newnode = (struct node *)malloc(sizeof(struct node));
     printf("Enter the data%d : ", i);
     scanf("%d", &newnode->data);
     newnode->next = 0;
     if(head == 0)
     {
        head = temp = newnode;
     } 
     else
       { 
        temp->next = newnode;
        temp = newnode;
       }
    }
   printf("--------------------------------\n");
   printf("Linked list : ");
   displayLL(head);
   small(head);
   large(head);
}