C语言数据结构_查找并删除单链表中最大值结点并返回值

这篇具有很好参考价值的文章主要介绍了C语言数据结构_查找并删除单链表中最大值结点并返回值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 文章来源地址https://www.toymoban.com/news/detail-747087.html

代码实现

 

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 
  4 typedef struct Node // 定义一个结构体
  5 {
  6     float data;
  7     struct Node *next;
  8 } Node;
  9 
 10 Node *Chuangzao_LinkedList() // 创建一个链表
 11 {
 12     Node *head = NULL; // 定义头指针
 13     Node *tail = NULL; // 定义尾指针
 14     /*并初始为null*/
 15     float Yuan_Su; // 定义元素
 16     printf("请输入多个整数(用空格分开,并以-1结束):\n");
 17     while (1)
 18     {
 19         scanf("%f", &Yuan_Su); // 循环输入元素
 20 
 21         if (Yuan_Su == -1)
 22         {
 23             break; // 输入-1,退出循环
 24         }
 25 
 26         Node *newNode = (Node *)malloc(sizeof(Node)); // 创建新结点,用malloc分配内存
 27         newNode->data = Yuan_Su;
 28         newNode->next = NULL;
 29 
 30         if (head == NULL) // 如果为头为空
 31         {
 32             head = newNode; // 指向新结点
 33             tail = newNode;
 34         }
 35         else
 36         {
 37             tail->next = newNode; // 插入链表尾部
 38             tail = newNode;       // 更新指针
 39         }
 40     }
 41 
 42     return head;
 43 }
 44 
 45 float Shanchu_MaxNode(Node **head) // 定义删除链表最大值的函数
 46 {
 47     if (*head == NULL)
 48     {
 49         printf("链表为空!");
 50         return -1;
 51     }
 52 
 53     Node *Dang_qian = *head; // 当前结点为头
 54     Node *maxNode = NULL;    // 最大结点和当前结点前一个为空
 55     Node *Qian_yige = NULL;
 56     float maxValue = Dang_qian->data;
 57 
 58     while (Dang_qian != NULL && Dang_qian->next != NULL)
 59     {
 60         if (Dang_qian->next->data > maxValue)
 61         {
 62             maxValue = Dang_qian->next->data;
 63             maxNode = Dang_qian;
 64             Qian_yige = maxNode;
 65         }
 66         else
 67         {
 68             Dang_qian = Dang_qian->next;
 69         }
 70     }
 71 
 72     if (maxNode == NULL)
 73     {
 74         maxNode = *head;
 75         *head = (*head)->next;
 76     }
 77     else
 78     {
 79         maxNode = maxNode->next;
 80         Qian_yige->next = maxNode->next;
 81     }
 82 
 83     float maxData = maxNode->data;
 84     free(maxNode);
 85     return maxData;
 86 }
 87 
 88 void printLinkedList(Node *head)
 89 {
 90     if (head == NULL)
 91     {
 92         return;
 93     }
 94     printLinkedList(head->next);
 95     printf(" %.2f->", head->data);
 96 }
 97 
 98 int main()
 99 {
100     Node *head = Chuangzao_LinkedList();
101     float maxData = Shanchu_MaxNode(&head);
102     printf("删除的最大值为:%.2f\n", maxData);
103     printf("删除链表最大的值后,链表的值如下:\n");
104     printLinkedList(head);
105     printf("\n");
106     system("pause"); // vscode中加入可以使cmd可以保留在屏幕上,删除则会一闪而过
107     return 0;
108 }

 

测试结果

 

C语言数据结构_查找并删除单链表中最大值结点并返回值

 

到了这里,关于C语言数据结构_查找并删除单链表中最大值结点并返回值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】(顺序表)C语言实现线性表顺序存储的创建、插入、删除、查找、输出等基本操作(附完整代码)

    要求:利用书本上的线性表的顺序存储结构定义 #define MAXSIZE 100 //顺序表可能达到的最大长度 typedef struct{ ElemType *elem; // 存储空间基址 int length; // 当前长度 int listsize; // 当前分配的存储容量(以sizeof(ElemType)为单位) } SqList; 1)编写完成下列功能的函数: (1)初始化一个线性表

    2024年04月28日
    浏览(29)
  • 数据结构--单链表的插入&删除

    目标 单链表的插入(位插、前插、后插) 单链表的删除 按为序插入(带头结点) ListInsert(L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。 思路:找到第i-1个结点,将新结点插入其后 代码实现 时间复杂度 最好时间复杂度 O(1) 最坏时间复杂度 O(1) 平均时间复杂度 O(1) 按位

    2024年02月07日
    浏览(32)
  • 【数据结构与算法】单链表的插入和删除

    🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏: 数据结构与算法 🌠 首发时间:2022年9月21日 🦋 欢迎关注🖱点赞👍收藏🌟留言🐾 🌟 一以贯之的努力 不得懈怠的人生 众所周知,顺序表中的每个结点中只存放数据元素,其优缺点为: 优点:可随机存取,存储

    2024年02月07日
    浏览(33)
  • 【数据结构】18 二叉搜索树(查找,插入,删除)

    二叉搜索树也叫二叉排序树或者二叉查找树。它是一种对排序和查找都很有用的特殊二叉树。 一个二叉搜索树可以为空,如果它不为空,它将满足以下性质: 非空左子树的所有键值小于其根节点的键值 非空右子树的所有键值都大于其根结点的键值 左、右子树都是二叉树 在

    2024年02月22日
    浏览(35)
  • 【数据结构】单链表——单链表的定义及基本操作的实现(头插、尾插、头删、尾删、任意位置的插入与删除)

    🧑‍💻作者: @情话0.0 📝专栏:《数据结构》 👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢!   顺序表可以随时存取表中的任意一个元素,它的存储位置可以用一个简单直观的公式表示,但是插入和删除操作需要移动

    2024年02月19日
    浏览(34)
  • 数据结构——单链表(C语言)

    在这⼀条⼗分漫长的路上,我⾛过阳关⼤道,也⾛过独⽊⼩桥。路旁有深⼭⼤泽,也有平坡宜⼈;有杏花春⾬,也有塞北秋风;有⼭重⽔复,也有柳暗花明;有迷途知返,也有绝处逢⽣。——《⼋⼗述怀》 目录 一 . 什么是链表? 二 . 实现单链表 (1)创建相关源文件和头文

    2024年02月08日
    浏览(93)
  • C语言:数据结构(单链表)

    概念:链表是一种 物理存储结构上非连续 、非顺序的存储结构,数据元素的 逻辑顺序 是通过链表的 指针链接 次序实现的。 链表的结构跟火车车厢相似,淡季时车次的车厢会相应减少,旺季时车次的车厢会额外增加几节。只需要将火车里的某节车厢去掉/加上,不会影响其

    2024年04月26日
    浏览(28)
  • 【C语言】数据结构-单链表

    主页:114514的代码大冒险 qq:2188956112(欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ ) Gitee:庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com 文章目录 目录 文章目录 前言(链表的优势) 一、单链表是什么 二、单链表操作的具体代码实现 1.准备工作 2.打印链表 2.尾插(在链表末端添加数据) 3、头插(

    2024年02月02日
    浏览(35)
  • 单链表(数据结构)(C语言)

    这里特指无哨兵位单向非循环链表 目录 背景 概念 单链表的实现 前景提示 单链表的结构体定义 单链表的打印 关于为什么不断言phead 关于单链表的逻辑结构和物理结构 单链表的尾插 关于为什么要用到二级指针 关于尾插的本质 关于找尾整个过程的解释 关于为什么打印单链表

    2023年04月22日
    浏览(63)
  • 数据结构--6.5二叉排序树(插入,查找和删除)

    目录 一、创建  二、插入 三、删除   二叉排序树(Binary Sort Tree)又称为二叉查找树,它或者是一棵空树,或者是具有下列性质的二叉树: ——若它的左子树不为空,则左子树上所有结点的值均小于它的根结构的值; ——若它的右子树不为空,则右子树上所有结点的值均大

    2024年02月09日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包