链表-----节点最大值,累加和,统计节点个数,逆序数据建立链表以及回文字符串

链表-节点最大值

本题要求实现一个函数,遍历一个不带头节点的链表,求链表节点数据的最大值

节点类型定义:

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

函数接口定义:

 

在这里描述函数接口。例如: int max_node( struct node *p)

p是链表头指针,返回链表上最大的ch属性值。

裁判测试程序样例:

#include <stdio.h>
#include<stdlib.h>
struct  node
{int ch;
struct node * next;}; struct node *setlink(int N);//建立链表函数,已经定义int max_node(struct node * head);//需要定义这个函数int main()
{
int N;
struct node *head; 
scanf("%d",&N); 
head=setlink(N);
printf("%d", max_node(head));
return 0;
}

输入样例:

在这里给出一组输入。例如:

6
7 8 9 1 2 3

输出样例:

在这里给出相应的输出。例如:

9

其实这个题目相对简单,我们只需要注意链表如何后移即可 

int max_node( struct node *p)
{int max=0;max=p->ch;struct node * s;//定义一个临时变量s=p;while(1){if(s->next==NULL)break;if(s->ch>max)max=s->ch;s=s->next;  //可以实现进入下一个节点}return max;
}

 

链表—累加和

本题要求实现一个函数,遍历一个不带头结点的链表,求链表节点数据的累加和

节点类型定义:

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

函数接口定义:

int sum_node( struct node *p)

p是链表头指针,返回链表上所有节点ch属性值的累加和。

裁判测试程序样例:

#include <stdio.h>
#include<stdlib.h>
struct  node
{int ch;
struct node * next;};struct node *setlink(int N);//建链表函数已经定义 
int sum_node(struct node * head);//需要定义的函数int main()
{
int N;
struct node *head; 
scanf("%d",&N); 
head=setlink(N);
printf("%d", sum_node(head));
return 0;
}
/* 请在这里填写答案 */

输入样例:

在这里给出一组输入。例如:

6
3 1 2 7 4 5

输出样例:

在这里给出相应的输出。例如:

22

这个题目也较为简单只需要注意一下最后一步 

#include<stdio.h>
#include<stdlib.h>
int sum_node( struct node *p)
{int sum=0;struct node * s;s=p;while(1){if(s->next==NULL)break;sum+=s->ch;s=s->next;}sum+=s->ch; //这里要注意尾结点的数据域在上面循环中未能进行处理return sum;
}

 

链表——统计节点个数

定义函数,遍历一个不带头结点的链表,统计链表上的节点个数

函数接口定义:

int countnode(struct node * head)

head是链表头指针,返回值是节点个数

裁判测试程序样例:

#include <stdio.h>
#include<stdlib.h>
struct  node
{int ch;
struct node * next;}; struct node *setlink(int N);//建立链表函数已建立int countnode(struct node * head);//需要顶一次函数int main()
{
int i,N;
struct node *head; 
scanf("%d",&N); 
head=setlink(N);
printf("%d", countnode(head));
return 0;
}/* 请在这里填写答案 */

输入样例:

在这里给出一组输入。例如:

6
1 2 3 4 5 6

输出样例:

在这里给出相应的输出。例如:

6

看完前两个题目,这个题也很容易了! 

#include<stdio.h>
#include<stdlib.h>
int countnode(struct node * head)
{int a=0;struct node * s;s=head;while(1){if(s->next==NULL)break;else{a++;s=s->next;}}return a+1; //跟第二个题一样需要注意尾结点
}

 

逆序数据建立链表

本题要求实现一个函数,按输入数据的逆序建立一个链表。

函数接口定义

struct ListNode *createlist();

函数createlist利用scanf从输入中获取一系列正整数,当读到−1时表示输入结束。按输入数据的逆序建立一个链表,并返回链表头指针。链表节点结构定义如下:

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

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>struct ListNode {int data;struct ListNode *next;
};struct ListNode *createlist();int main()
{struct ListNode *p, *head = NULL;head = createlist();for ( p = head; p != NULL; p = p->next )printf("%d ", p->data);printf("\n");return 0;
}/* 你的代码将被嵌在这里 */

输入样例:

1 2 3 4 5 6 7 -1

输出样例:

7 6 5 4 3 2 1 

看了前三个是不是感觉还可以呢,现在来上点难度 

分析一下题目,逆序输出链表,那不就是要用头插法建立链表么头插法就是一直往前插入数据,而尾插法是一直往后插入数据

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
struct ListNode *createlist()
{struct ListNode * s,* head;int data;head=(struct ListNode *)malloc(sizeof(struct ListNode));//这里我们要建立一个头结点head->next=NULL;  //头结点的指针域为空while(1){scanf("%d",&data);if(data==-1)//链表结束标志break;s=(struct ListNode *)malloc(sizeof(struct ListNode));s->data=data; //s中存储新的数据s->next=head->next; //s的指针域指向头结点head->next=s;    //头结点的指针域指向存放新数据的s}    //循环结束后head相当于头指针,其指针域指向我们所要的第一个节点return head->next;
}

 

判断回文字符串

本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。

函数接口定义:

int Judge_char( char *s );

函数Judge_char判断输入字符串char *s是否为回文,若是则返回1,否则返回0。

裁判测试程序样例:

#include <stdio.h>
#include <string.h>
#define MAXN 20
int Judge_char( char *s );int main()
{char s[MAXN];scanf("%s", s);if ( Judge_char(s)==1 )printf("Yes\n");elseprintf("No\n");printf("%s\n", s);return 0;
}/* 你的代码将被嵌在这里 */

输入样例:

thisistrueurtsisiht

输出样例:

Yes
thisistrueurtsisiht

输入样例:

thisisnottrue

输出样例:

No
thisisnottrue

最后再附上最近碰见的回文吧! 

#include<stdio.h>
#include<string.h>
int Judge_char( char *s )
{int i=0,j;for(i=0,j=strlen(s)-1-i;i<j;i++,j--){if(s[i]!=s[j])break;}if(j<=i)   //是回文的话一定存在i>=j,否则不是回文return 1;if(i<j)return 0;
}

 欢迎大家积极留言呀!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++的内存管理(2)——new与delete的内核与本质

内存管理 operator new 与 operator delete函数回看new与delete的实现内置类型自定义类型 常见面试题 我们已经知道了new与delete的用法及其好处&#xff0c;发现它似乎与C语言中的动态内存开辟的函数&#xff08;malloc/calloc/realloc&#xff09;不同 在这里我们特别指出&am…

Word第一课

文章目录 1. 文件格式1.1 如何显示文件扩展名1.2 Word文档格式的演变1.3 常见的Word文档格式 3. 文档属性理解文档属性查看文档属性 4. 显示比例方式一&#xff1a; 手动调整方式二&#xff1a; 自动调整 5. 视图、窗口视图 1. 文件格式 1.1 如何显示文件扩展名 文档格式指的…

Java零基础 - 算术运算符

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

Groq:最快的AI芯片

背景 Groq 是一家由多位前 Google TPU 开发者组建的芯片公司。成立于 2016 年底&#xff0c;Groq 的目标是为 AI 和 HPC 工作负载提供毫不妥协的低延迟和高性能。与传统的 CPU 和 GPU 架构不同&#xff0c;Groq 从头设计了一个张量流处理器&#xff08;TSP&#xff09;架构&am…

Nginx缓存相关配置解析

文章目录 前言配置示例proxy_cacheproxy_cache_pathproxy_cache_keyproxy_cache_validproxy_cache_lockproxy_cache_methodsproxy_cache_bypassproxy_no_cacheproxy_cache_min_usesadd_header 可选项 使用示例通过响应头判断是否走缓存 缓存手动删除原博客 前言 客户端需要访问…

C#与VisionPro联合开发——TCP/IP通信

TCP/IP&#xff08;传输控制协议/互联网协议&#xff09;是一组用于在网络上进行通信的通信协议。它是互联网和许多局域网的基础&#xff0c;为计算机之间的数据传输提供了可靠性、有序性和错误检测。在软件开发中&#xff0c;TCP/IP 通信通常用于实现网络应用程序之间的数据交…

latex笔记总结

目录 latex基本语法latex双列单列相互转换公式对齐方法表格格式问题latex设置图片 latex基本语法 在LaTeX中如何使用波浪号 latex双列单列相互转换 单栏&#xff1a;\documentclass[journal,11pt,draftclsnofoot,onecolumn]{IEEEtran} 双栏&#xff1a;\documentclass[journ…

利用Socket.io实现实时通讯功能

在当今快节奏的社交和工作环境中&#xff0c;实时通讯已经变得至关重要。无论是在线游戏的即时交流&#xff0c;还是团队协作中的实时消息传递&#xff0c;都需要强大的实时通讯功能来支持。而在前端开发中&#xff0c;利用Socket.io这一强大的工具库&#xff0c;实现实时通讯功…

自定义Chrome的浏览器开发者工具DevTools界面的字体和样式

Chrome浏览器开发者工具默认的字体太小&#xff0c;想要修改但没有相关设置。 外观——字体可以自定义字体&#xff0c;但大小不可以调整。 github上有人给出了方法 整理为中文教程&#xff1a; 1.打开浏览器开发者工具&#xff0c;点开设置——实验&#xff0c;勾上红框设…

五、使用脚手架

五、使用脚手架 5.1 简单的实现 创建一个 School 组件 <template> <div><h2>学校名称&#xff1a;{{name}}</h2><h2>学校地址&#xff1a;{{address}}</h2> </div> </template><script> export default {name: "S…

猜字谜|构建生成式 AI 应用实践(一)

在 2023 亚马逊云科技 re:Invent 之后&#xff0c;细心的开发者们也许已经发现有一个很有趣的动手实验&#xff1a;开发一款可部署的基于大语言模型的字谜游戏&#xff1a; 该款游戏使用了文生图模型为玩家提供一个未知的提示词&#xff0c;玩家需要根据模型生成的图像来猜测该…

众安保险基于Apache SeaTunnel的生产应用实践

*> 文&#xff5c;曾力 众安保险大数据开发高级专家 编辑整理&#xff5c; 曾辉* 前言 众安保险从2023年4月就开始了数据集成服务的预研工作&#xff0c;意在通过该服务解决当前数据同步场景下的两大痛点&#xff0c;服务化能力薄弱和无分布式同步能力。我们对多种开源数据…

新鲜出炉:小巧优雅的 css-in-js库StyledFc

StyledFc 一个简单的运行时css-in-js库&#xff0c;用于封装react组件 零依赖非常小&#xff0c;< 3kb.运行时生成css支持css变量支持类似less的嵌套css样式支持props动态css支持typescript 在线演示 | Github 安装 pnpm add styledfc # or npm install styledfc # or …

matplotlib绘图初步

文章目录 绘制曲线图完整流程图像属性 绘制曲线图 matplotlib是python中最常用的可视化库&#xff0c;提供了不同坐标系下的二十余种常用图像&#xff0c;并且提供了动态图像绘制的方法&#xff0c;可以满足科学计算中的绝大多数可视化需求。而在matplotlib中&#xff0c;绝大…

HTML5和CSS3提高

一、HTML5的新特性 增加了一些新的标签&#xff0c;新的表单&#xff0c;新的表单属性&#xff0c;IE9以上版本的浏览器才支持 注意&#xff1a; 这些语义化标准主要针对搜索引擎的 新标签可以使用多次 在IE9中需要把这些元素转化为块级元素 新增的多媒体标签 主要包含两个…

iOS面试:3.Object-C相关

一、OC 是动态类型语言吗&#xff1f;OC 是强类型语言吗&#xff1f;为什么&#xff1f; Objective-C (OC) 是一种动态类型语言&#xff0c;同时也是一种强类型语言。 动态类型语言&#xff1a; 在动态类型语言中&#xff0c;变量的类型是在运行时确定的&#xff0c;而不是在编…

PPT复制粘贴后背景变没了怎么处理

目录 1.问题描述&#xff1a;2.解决方法&#xff1a;小结&#xff1a; 1.问题描述&#xff1a; 把一个ppt中的一张ppt粘贴到另一个ppt中&#xff0c;背景变没了&#xff0c;如下所示&#xff1a; 复制&#xff1a; 粘贴&#xff1a; 2.解决方法&#xff1a; 粘贴完后点击 保…

vscode 如何连接 WSL (不能通过 IP 地址连接)

来源&#xff1a;https://www.cnblogs.com/wxdblog/p/17234342.html vscode (remote-ssh) 连接 WSL 不能使用 IP地址 连接&#xff0c;需要安装 WSL 扩展才行

React18源码: task任务调度和时间分片

任务队列管理 调度的目的是为了消费任务&#xff0c;接下来就具体分析任务队列是如何管理与实现的 在 Scheduler.js 中&#xff0c;维护了一个 taskQueue, 任务队列管理就是围绕这个 taskQueue 展开 // Tasks are stored on a min heap var taskQueue - []; var timerQueue …

yolov9目标检测报错AttributeError: ‘list‘ object has no attribute ‘device‘

最近微智启软件工作室在运行yolov9目标检测的detect.py测试代码时&#xff0c;报错&#xff1a; File “G:\down\yolov9-main\yolov9-main\detect.py”, line 102, in run pred non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_detmax_det) Fil…