dhu 1.2 链表的中间结点
链表的中间结点
时间限制: 1S类别: DS:数组与链表->链表–简单
晚于: 2022-03-17 23:55:00后提交分数乘系数50%
截止日期: 2022-03-20 23:55:00
问题描述 :
给定一个无头结点的非空单链表,头指针为 head,请返回链表的中间结点的值。
如果有两个中间结点,则返回第二个中间结点。
示例 1:
输入:[1,2,3,4,5]
输出:3
示例 2:
输入:[1,2,3,4,5,6]
输出: 4
由于该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点。
可使用以下代码,完成其中的middleNode函数,其中形参head指向单链表,返回中间结点的值。
#include
using namespace std;
struct ListNode
{
int val;ListNode *next;ListNode() : val(0), next(NULL) {}ListNode(int x) : val(x), next(NULL) {}ListNode(int x, ListNode *next) : val(x), next(next) {}
};
class Solution {
public:
int middleNode(ListNode* head) {//填充本函数完成功能 }
};
ListNode *createByTail()
{
ListNode *head;ListNode *p1,*p2;int n=0,num;int len;cin>>len;head=NULL;while(n<len && cin>>num){p1=new ListNode(num);n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;}return head;
}
int main()
{
ListNode* head = createByTail();int result=Solution().middleNode(head);cout<<result<<endl;return 0;
}
输入说明 :
首先输入链表长度len,然后输入len个整数,以空格分隔。
len的范围为 1到100。
输出说明 :
输出一个整数,表示中间结点的值。
输入范例 :
6
1 2 3 4 5 6
输出范例 :
4
#include <iostream>
#include <cstring>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <sstream>
#include <vector>
#include <cstdio>
#define endl '\n'
using namespace std;
int ok = 0;
struct ListNode
{int val;ListNode* next;ListNode() : val(0), next(NULL) {}ListNode(int x) : val(x), next(NULL) {}ListNode(int x, ListNode* next) : val(x), next(next) {}
};
class Solution {public:int middleNode(ListNode* head) {if (ok % 2 == 0){int len = (ok / 2 );ListNode* p = head;int pl = 0;for (pl = 0; pl < len; pl++){p = p->next;}return p->val;}else{int len = (ok + 1)/2;ListNode* p = head;int pl = 0;for (pl = 1; pl < len; pl++){p = p->next;}return p->val;}}
};
ListNode* createByTail()
{ListNode* head;ListNode* p1, * p2=NULL;int n = 0, num;int len;cin >> len;ok = len;head = NULL;while (n<len && cin >> num){p1 = new ListNode(num);n = n + 1;if (n == 1)head = p1;elsep2->next = p1;p2 = p1;}return head;
}
int main()
{ListNode* head = createByTail();int result = Solution().middleNode(head);cout << result << endl;return 0;
}
dhu 1.2 链表的中间结点相关推荐
- LeetCode 876——链表的中间结点
1. 题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形 ...
- Leetcode 876. 链表的中间结点 (每日一题 20210918)
给定一个头结点为 head 的非空单链表,返回链表的中间结点.如果有两个中间结点,则返回第二个中间结点.示例 1:输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) ...
- 876. 链表的中间结点(C语言)
**给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3, ...
- 七十一、去重交换排序链表、 求链表的中间结点
@Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. ---- Runsen 最近在重新梳理学算法的知识,本文为链表常见操作复习的总结文章,会讲解 ...
- LeetCode Algorithm 876. 链表的中间结点
876. 链表的中间结点 Ideas 这题直接秒杀吧,快慢指针,快指针一次走两步,慢指针一次走一步,快指针到头之后慢指针正好到链表中间. Code C++ class Solution {public ...
- leetcode-876. 链表的中间结点解法
给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4 ...
- 876. 链表的中间结点
给定一个头结点为 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点 代码一: 自己想的一个方法 class Solution {public ListNode m ...
- 链表题目--2 求链表的中间结点 和 求链表中倒数第k个结点
求链表的中间结点 思路 一个走两步,一个走一步.一个走到尾,另外一个就走到了中间 /*** Definition for singly-linked list.* struct ListNode {* ...
- LeetCode 876. 链表的中间结点(快慢指针)
1. 题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 2. 解题 快慢指针法 class Solution {public:List ...
最新文章
- 用Eclipse的snippets功能实现代码重用
- java 自定义对话框_Java经典实例:用户自定义对话框
- 时间被空间和运动度量
- PAT 1041. 考试座位号(15)
- 手机号、姓名、邮箱等合法性验证方法
- spring securiy使用总结
- C#毕业设计——基于C#+asp.net+sqlserver的网上书店系统设计与实现(毕业论文+程序源码)——网上书店系统
- 智慧管廊可视化管理系统搭建
- 2021年南京市高考成绩查询,2021年南京高考各高中成绩及本科升学率数据排名及分析...
- 关于CAN网络管理状态
- 个人网站怎么建设,个人网站建设流程
- 小米怎么快速回到顶部_实在没想到,小米有6种截屏方法!以前只知道3种,实在太吃亏了...
- android studio 添加 ignored files 忽略文件
- php总结与展望_2020 年的 PHP 回顾与展望
- xftp7要继续使用此程序,您必须应用最新的更新,100%已解决.
- 基于Mysql的智慧医疗管理系统
- 【Web网站服务器开发】apache和tomcat 阿帕奇和汤姆猫
- Django框架(五)--ORM操作
- Java人脸识别登录Demo(人脸考勤系统)
- springBoot Aop打印日志