c语言--力扣简单题目(回文链表)讲解

server/2024/9/22 17:06:07/

题目如下:
给你一个单链表的头节点 head ,请你判断该链表是否为

回文链表

如果是,返回 true ;否则,返回 false 。

示例 1:

输入:head = [1,2,2,1] 输出:true

示例 2:

输入:head = [1,2] 输出:false

提示:

链表中节点数目在范围[1, 105] 内

0 <= Node.val <= 9

结构体定义:

typedef struct Node {
char val;
struct Node* next;
}Node;
typedef Node* List;

文章目录

  • 第一部分
  • 第二部分

第一部分

List head, tail;
Node* p;
p = (Node*)malloc(sizeof(struct Node));
int ch, val,n=0,i=1;
head = p;
tail = p;
head->next = NULL;
printf("请输入链表的内容");
while ((ch = getchar()) != '\n') {if (ch == ' ') {continue;}p = (Node*)malloc(sizeof(struct Node));p->val = ch-48;tail->next = p;tail = p;tail->next = NULL;n += 1;
}

这部分就是一个普通的输入。

第二部分

tail = head->next;//让tail指针指向第一个节点
int* sum = (int*)malloc(n * sizeof(int));
if (n % 2 == 0) {for (int n1 = 0; n1 < n; n1++) {if (sum[i - 1] != tail->val) {sum[i] = tail->val;i += 1;}else {sum[i - 1] = 0;i -= 1;}tail = tail->next;}
}
else {for (int n1 = 0; n1 < n; n1++) {if (sum[i - 2] != tail->val) {sum[i] = tail->val;i += 1;}else {sum[i - 2] = 0;i -= 1;}tail = tail->next;}
}
if (sum[1] == 0) {printf("true");
}
elseprintf("false");
return 0;

这里我们先让tail指针指向第一个元素所在的节点,之后进行动态内存分配。

我们这里使用了一个毕竟笨的办法,如果有奇数个数字,我们会让用i-2去判断,而不是i-1,比如我们输入121,那么中间的2我们就不进行判断,直接用两个1去判断,如果有偶数个数字,那么我们就用i-1去进行判断。

(我可能解释的不够清楚,请各位大佬帮忙补充)。


http://www.ppmy.cn/server/118286.html

相关文章

DockerDocker Compose安装(离线+在线)

Docker&Docker Compose安装(离线在线) Docker离线安装 下载想要安装的docker软件版本&#xff1a;https://download.docker.com/linux/static/stable/x86_64/ 如目标机无法从链接下载&#xff0c;可以在本机下载后 scp docker版本压缩包[如docker-20.10.9.tgz] usernameh…

电巢科技携Ecosmos元宇宙产品亮相第25届中国光博会

第25届中国国际光电博览会&#xff08;“CIOE中国光博会”&#xff09;今日在深圳国际会展中心盛大开幕。本届博览会以“光电引领未来&#xff0c;驱动应用创新”为主题&#xff0c;吸引了全球超过3700家优质光电企业参展&#xff0c;展示了光电产业的最新成果和前沿技术。 电…

数据库语言、SQL语言、数据库系统提供的两种语言

1.数据库语言 数据库语言有很多种&#xff0c;其中一种是SQL语言。 2. SQL语言 【几乎所有的关系数据库系统都使用SQL语言。】 SQL语言中包含很多不同的部分&#xff0c;有&#xff1a; &#xff08;1&#xff09;DDL语言&#xff08;Data definition language&#xff09;…

Matlab simulink建模与仿真 第十七章(补充离散库和补充数学库)

参考视频&#xff1a;simulink1.1simulink简介_哔哩哔哩_bilibili 一、补充离散库和补充数学库中的模块概览 1、补充离散库 注&#xff1a;每个版本的补充离散库不一定相同&#xff0c;也不是每个版本的库都有如上所有模块。 2、补充数学库 二、离散直接传递函数Ⅱ模块 1、…

[Unity Demo]从零开始制作空洞骑士第三集之导入插件2D toolkit和使用playmaker制作敌人状态机以及扩展FSM脚本

当你看到我这段字的时候&#xff0c;说明我正在火车上用手机打字&#xff0c;因为我要回家过中秋了但我没带电脑。但我记忆又贼差&#xff0c;乘着我还记得我前几个小时都干了什么我先把记得的内容都写到这里&#xff0c;等过两天回去了我再把代码贴出来。 首先还是感谢你坚持…

Spring扩展点系列-BeanFactoryAware

文章目录 简介源码分析示例代码示例一&#xff1a;验证BeanFactoryAware执行顺序示例二&#xff1a;动态获取其他bean示例三&#xff1a;动态bean的状态 简介 spring容器中Bean的生命周期内所有可扩展的点的调用顺序 扩展接口 实现接口ApplicationContextlnitializer initia…

【Python笔记】PyCharm大模型项目环境配置

一、PyCharm创建新项目 二、更新pip版本 ...>python.exe -m pip install --upgrade pip 三、生成所需requirements配置文件 ...>pip freeze > requirements.txt 四、安装所需组件requirements.txt ...>pip install -r requirements.txt

如何进行DAP-seq的数据挖掘,筛选验证位点

从样本准备到寄送公司&#xff0c;每一天都在“祈祷”有个心仪的分析结果&#xff0c;终于在这天随着邮件提示音的响起&#xff0c;收到了分析结果...... 分析前工作 爱基在进行数据分析之前&#xff0c;会有两次质控报告反馈给老师们。第一个&#xff0c;基因组DNA的提取质控…