您现在的位置是:首页 > 编程 > 

单链表相关面试题

2025-07-29 03:16:52
单链表相关面试题 7.链表的回文结构 链表的回文结构_牛客题霸_牛客网 (nowcoder) /* 解题思路: 此题可以先到中间节点,然后把后半部分逆置,最近前后两部分一一比对,如果节点的值全部相同,则即为回文。 */ 代码语言:javascript代码运行次数:0运行复制class PalindromeList { public: bool chkPalindrome(Li

单链表相关面试题

7.链表的回文结构 链表的回文结构_牛客题霸_牛客网 (nowcoder)

/* 解题思路: 此题可以先到中间节点,然后把后半部分逆置,最近前后两部分一一比对,如果节点的值全部相同,则即为回文。 */

代码语言:javascript代码运行次数:0运行复制
class PalindromeList {
public:
	bool chkPalindrome(Listode* A) {
		if (A == ULL || A->next == ULL)
			return true;
		Listode* slow, *fast, *prev, *cur, *nxt;
		slow = fast = A;
		//到中间节点
		while (fast && fast->next)
		{
			slow = slow->next;
			fast = fast->next->next;
		}
		prev = ULL;
		//后半部分逆置
		cur = slow;
		while (cur)
		{
			nxt = cur->next;
			cur->next = prev;
			prev = cur;
			cur = nxt;
		}
		//逐点比对
		while (A && prev)
		{
			if (A->val != prev->val)
				return false;
			A = A->next;
			prev = prev->next;
		}
		return true;
	}
};

/* 此题也可以先把链表中的元素值全部保存到数组中,然后再判断数组是否为回文。不建议使用这种解法,因为如果没有告诉链表最大长度,则不能同此解法 */

代码语言:javascript代码运行次数:0运行复制
class PalindromeList {
public:
    bool chkPalindrome(Listode* A) {
        // write code here
        int a[900] = {0};
        Listode* cur = A;
        int n = 0;
        //保存链表元素
        while(cur)
        {
            a[n++] = cur->val;
            cur = cur->next;
        }
        //判断数组是否为回文结构
        int begin = 0, end = n-1;
        while(begin < end)
        {
            if(a[begin] != a[end])
                return false;
            ++begin;
            --end;
        }
         
        return true;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:202-11-22,如有侵权请联系 cloudcommunity@tencent 删除数组intnullreturn链表

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1261875.html

相关标签:无
上传时间: 2025-07-28 09:16:42
留言与评论(共有 15 条评论)
本站网友 qq尾巴病毒
8分钟前 发表
分享自作者个人站点/博客
本站网友 andamiro
27分钟前 发表
*prev
本站网友 福州ktv团购
30分钟前 发表
*fast
本站网友 上海锦江旅行社
23分钟前 发表
则即为回文
本站网友 容县政府网
30分钟前 发表
原始发表:202-11-22
本站网友 过敏性皮肤炎
2分钟前 发表
*prev
本站网友 hztxt
22分钟前 发表
不建议使用这种解法
本站网友 治疗口臭
14分钟前 发表
end = n-1; while(begin < end) { if(a[begin] != a[end]) return false; ++begin; --end; } return true; } };本文参与 腾讯云自媒体同步曝光计划
本站网友 iv是几
0秒前 发表
如有侵权请联系 cloudcommunity@tencent 删除前往查看数组intnullreturn链表
本站网友 十大碱性食物排名
22分钟前 发表
*nxt; slow = fast = A; //到中间节点 while (fast && fast->next) { slow = slow->next; fast = fast->next->next; } prev = ULL; //后半部分逆置 cur = slow; while (cur) { nxt = cur->next; cur->next = prev; prev = cur; cur = nxt; } //逐点比对 while (A && prev) { if (A->val != prev->val) return false; A = A->next; prev = prev->next; } return true; } }; /* 此题也可以先把链表中的元素值全部保存到数组中
本站网友 企业管理咨询
18分钟前 发表
bool chkPalindrome(Listode* A) { // write code here int a[900] = {0}; Listode* cur = A; int n = 0; //保存链表元素 while(cur) { a[n++] = cur->val; cur = cur->next; } //判断数组是否为回文结构 int begin = 0
本站网友 记忆航班
26分钟前 发表
如有侵权请联系 cloudcommunity@tencent 删除前往查看数组intnullreturn链表
本站网友 去除红血丝的偏方
30分钟前 发表
最近前后两部分一一比对
本站网友 三吱儿
22分钟前 发表
原始发表:202-11-22