首页 > 其他分享 >回文链表

回文链表

时间:2024-12-21 11:32:08浏览次数:3  
标签:head ListNode val int next 链表 回文

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

示例 1:

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

示例 2:

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

 思路:使用栈来存储节点值,然后开始比对

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    bool isPalindrome(ListNode* head) {
        //使用栈来存储节点值
        stack<int> st;
        ListNode *p = head;
        while(p){
            st.push(p->val);
            p = p->next;
        }
        //开始比对
        p = head;
        while(p){
            int val = st.top();
            st.pop();
            if(val!=p->val){
                return false;
            }
            p=p->next;
        }
        return true;
    }
};

 

标签:head,ListNode,val,int,next,链表,回文
From: https://www.cnblogs.com/yueshengd/p/18620559

相关文章

  • 数据结构-链表-代码
    单链表-每个节点需要存储下一节点的地址不要求大片连续的空间,改变容量方便+但是不能随机存储,要耗费一定空间存放指针不带头结点带头结点-更方便——所以一般采用带头结点的方式带头结点#include<stdlib.h>#include<iostream>usingnamespacestd;typedefint......
  • 相交链表
    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。 /***......
  • 数据结构漫游记:静态链表的实现(CPP)
    嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的passion。准备好和我一起冲进代码的奇幻宇宙了吗?Let'sgo!我的博客:yuanManGan我的专栏:C++入门小馆 C......
  • LeetCode题集-9 - 回文数
    题目:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。01、反转字符串法此题我第一反应就是直接把整数转为字符串,然后通过字符串Reverse方法,反转字符串,最后......
  • LeetCode-19. 删除链表的倒数第 N 个结点,关于删除链表会遇见的指针问题
    原题链接前言虽然这道题比较简单,但是我在做这道题时发现了几个需要注意的地方,故写个笔记提一下。正文先将源代码给出来classSolution{public:ListNode*removeNthFromEnd(ListNode*head,intn){ListNode*x=newListNode();x->next=head......
  • 编写简单有序链表的创建和查询修改
    编写一个简单的单向链表,实现对一组长度不定的有序整数的管理(查询、插入、修改、删除)。编程要求(1)创建一个单向链表,其结点包含值(number)和序号(xuhao)两个整型数据字段(序号从1开始递增,相邻两结点的序号相差1,下同),输出该链表(按顺序从头部开始输出结点的值,相邻结点值之间用一个......
  • 今日链表初识
    前言:链表是数据结构非常常见的一种,比如在java中LinkedList,数据库中的B+TREE都用到了链表。今天我们先来认识一下,什么是链表,以及一个简单的练习反转链表。什么是链表链表是一种每个节点不光可以存储当前节点数据,并且还会保存这一个节点的指针。如图:那如何使用java语言......
  • 链表的错误处理之没把地址给到next
    void add_end_node(Node_t*head,intdata)//这里是在尾部添加节点{  Node_t*newnode=(Node_t*)malloc(sizeof(Node_t));  if(!newnode)  {    exit(1);  }  newnode->data=data;  newnode->next=NULL;  Node_t*cur=(No......
  • 12.17双向链表和循环链表
    1.思维导图2.单向循环链表1>程序代码:头文件:#ifndef__LOOPLINK_H__#define__LOOPLINK_H__#include<stdio.h>#include<stdlib.h>//构造节点数据类型typedefintDatatype;typedefstructnode{ union { intlen; Datatypedata; }; structnode*next;}......
  • 12.16链表
    1.思维导图2.相关代码头文件linkList.h:#ifndef__LINKLIST_H__#define__LINKLIST_H__#include<stdio.h>#include<stdlib.h>typedefintDatatype;//创建节点结构体类型typedefstructnode{ union { intlen; Datatypedata; }; structnode*next;}li......