链表初步之找最大结点

#include <stdio.h>
#include <stdlib.h>
struct node       //结点数据类型
{
    int data;
    struct node *next;
};

//实现以下二个函数中的一个。
struct node * largestnode1(struct node *head);
void largestnode2(struct node *head,struct node **ppmax);


 void destroy(struct node* head);
 struct node* headinsert(struct node* head);
 
main()
{
    struct node *head=NULL;
    struct node * pmax;
    head=headinsert(NULL);   //用前插法创建链表

    //找到最大结点,将其地址传给pmax
    // pmax=largestnode1(head);
    //largestnode2(head,&pmax);
       pmax = largestnode1(head);    //选择上面二个被注释掉的语句中1个,并实现相应的函数。建议有的同学,可以二种都尝试一下,并提交二次


   printf("%d",pmax->data);

    //释放资源
    destroy(head);

}
    }
    return   head;           


struct node* headinsert(struct node* head)
 {   struct node *p;
     int n=0;
    //采用相同的方式创建6个结点,并且前插
    while(n<6)
    {
        //申请结点空间,创建新结点,并让p指向新结点
        p =  (struct node *)malloc(sizeof(struct node));
                 
        //初始化结点数据域  
        scanf("%d",&(p->data));         
        //挂链
        p->next=head;      //新结点的指针域,指向原来的第1个结点
        head=p;            //让新结点成为第1个结点
        n++;  //返回第1个结点的地址
 }

struct node * largestnode1(struct node* head)
{   struct node *pmax=head;             //先假定第1个结点最大
    struct node *p=head->next;          //p指向第2个结点
    
 while (p!= NULL) {
        if (p->data > pmax->data) {
            pmax = p;
        }
        p = p->next;
    }


    return pmax;
}

void largestnode2(struct node *head,struct node **ppmax)
{   
    *ppmax=head;             //先假定第1个结点最大
    struct node *p=head->next;          //p指向第2个结点
    
while (p!= NULL) {
        if (p->data > (*ppmax)->data) {
            *ppmax = p;
        }
        p = p->next;
    }

}

 void destroy(struct node* head)
{   struct node *p;
    while(head!=NULL)
    {
        p = head;             //p指向要销毁的结点
        head = head ->next;   //head指向再下一个要销毁的结点
        free(p);               //销毁p指向的结点
    }
}

相关推荐

  1. 初步

    2024-05-12 17:10:02       14 阅读

最近更新

  1. 技术浅谈:如何入门一门编程语言

    2024-05-12 17:10:02       0 阅读
  2. C#如何进行深度学习对行人进行识别?

    2024-05-12 17:10:02       0 阅读
  3. 金南瓜科技的SECS/GEM解决方案

    2024-05-12 17:10:02       0 阅读
  4. Linux 系统监控工具深度解析:Glances 与 Nmon

    2024-05-12 17:10:02       1 阅读
  5. 使用YOLO5进行模型训练机器学习【教程篇】

    2024-05-12 17:10:02       1 阅读

热门阅读

  1. ubuntu bind9 主从配置

    2024-05-12 17:10:02       12 阅读
  2. 华为昇腾310B1平台深度学习算法模型转换

    2024-05-12 17:10:02       16 阅读
  3. 前端:零宽字符

    2024-05-12 17:10:02       14 阅读
  4. Hive on Tez 作业优化参数

    2024-05-12 17:10:02       9 阅读
  5. PostgreSQL自带的命令行工具10- pg_basebackup

    2024-05-12 17:10:02       13 阅读
  6. Linux上的监控工具:Zabbix、Prometheus、APM和ELK

    2024-05-12 17:10:02       8 阅读
  7. SSL VPN

    SSL VPN

    2024-05-12 17:10:02      13 阅读
  8. 2024.5.12 ubuntu + latex + vscode

    2024-05-12 17:10:02       14 阅读
  9. springboot Redis 支持星号(*) 包括注解@Cache

    2024-05-12 17:10:02       10 阅读