当前位置: 首页 > news >正文

寻求南宁网站建设人员北京seoqq群

寻求南宁网站建设人员,北京seoqq群,wordpress3.5,美国做垂直电商的网站文章目录 [toc]问题描述数据范围示例 C代码实现使用栈实现(不符合要求,仅作为思路) 解题思路 - 原地反转链表步骤 C语言代码实现 以前只用过C刷过代码题目,现在试着用C语言刷下 问题描述 给定一个单链表的头结点 pHead&#xff…

文章目录

      • @[toc]
      • 问题描述
        • 数据范围
        • 示例
      • C++代码实现
        • 使用栈实现(不符合要求,仅作为思路)
      • 解题思路 - 原地反转链表
        • 步骤
      • C语言代码实现

以前只用过C++刷过代码题目,现在试着用C语言刷下

问题描述

给定一个单链表的头结点 pHead,反转该链表后返回新链表的表头。
在这里插入图片描述

数据范围
  • 链表长度 0 ≤ n ≤ 1000 0 \leq n \leq 1000 0n1000
  • 要求:空间复杂度 O ( 1 ) O(1) O(1),时间复杂度 O ( n ) O(n) O(n)
示例
  1. 输入:{1,2,3}
    输出:{3,2,1}

  2. 输入:{}
    输出:{}

如果链表为空,则直接返回空。


C++代码实现

最开始尝试用 C++ 的 实现,结果想到C语言不能直接调用栈,玛德。但考虑到题目要求空间复杂度为 O ( 1 ) O(1) O(1),栈的实现并不符合要求。

使用栈实现(不符合要求,仅作为思路)
#include <stack>
#include <iostream>
using namespace std;// 定义链表节点
struct ListNode {int val;struct ListNode* next;ListNode(int x) : val(x), next(nullptr) {}
};// 使用栈实现链表反转
struct ListNode* ReverseList(struct ListNode* head) {if (head == nullptr)  // 空链表直接返回return head;stack<ListNode*> st;  // 定义一个栈ListNode* cur = head;// 将所有节点压入栈while (cur != nullptr) {st.push(cur);cur = cur->next;}// 弹出栈顶元素作为新链表头ListNode* newHead = st.top();st.pop();cur = newHead;// 重新连接链表while (!st.empty()) {cur->next = st.top();st.pop();cur = cur->next;}cur->next = nullptr;  // 终止链表return newHead;
}

此代码能实现反转,但使用了辅助栈,空间复杂度为 O ( n ) O(n) O(n),不符合题目要求。


解题思路 - 原地反转链表

为了满足空间复杂度 O ( 1 ) O(1) O(1) 的要求,我们使用三个指针实现链表的 原地反转

步骤
  1. 初始化

    • prev:指向当前节点的前驱节点(初始为 NULL)。
    • cur:指向当前节点。
    • next:临时保存当前节点的后继节点。
  2. 反转过程

    • 逐一将当前节点的 next 指针指向 prev
    • prevcur 向后移动。
  3. 结束条件

    • cur 遍历到链表尾部(即 cur ->next== NULL),同时别忘了,把最后一个结点也给处理了,cur->next=pre。链表反转完成,此时 cur 即为新链表头。

C语言代码实现

/*** struct ListNode {*	int val;*	struct ListNode *next;* };*/
/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 * @return ListNode类*/
struct ListNode* ReverseList(struct ListNode* head ) {if(head==NULL)return head;struct ListNode* cur=head;struct ListNode* pre=NULL;struct ListNode* next=cur->next;while(cur->next!=NULL){cur->next=pre;pre=cur;cur=next;next=cur->next;}cur->next=pre;return cur;// write code here
}

轻松拿捏。

http://www.shuangfujiaoyu.com/news/49171.html

相关文章:

  • 宁波做公司网站网页
  • 型网站建设网站seo运营培训机构
  • 律所网站建设手机端网站优化
  • 配置 tomcat 做网站百度今日数据
  • 简述企业网站的建设过程今天的三个新闻
  • 百度网站怎样做推广网上推广怎么弄?
  • 公司内部网站管理系统上海网站推广广告
  • 做网站收费吗天津抖音seo
  • 网站不足seo品牌优化
  • ruby做的网站开发社群运营
  • wordpress论坛投票微信搜索seo优化
  • 科普网站建设方案重庆百度竞价推广
  • icp网站备案密码找回qianhu微建站
  • 抚州南城网站建设360推广登录入口
  • 网站的内部优化公司google谷歌搜索引擎
  • 做网站 图片显示不出来站长工具友链检测
  • 天津网站建设公司排名广州网站优化公司
  • 公司网站手工优化怎么做苏州百度搜索排名优化
  • wordpress链接数据库失败seo是什么意思seo是什么职位
  • 网站建设费用构成网站工具查询
  • 爱城市网app官方下载seo和sem的区别是什么?
  • 个人网站可以做论坛吗?如何设计推广方案
  • 容桂商城网站建设哈尔滨网络推广优化
  • 深圳创业补贴2024安徽搜索引擎优化
  • 举报不良网站信息怎么做临沂seo整站优化厂家
  • wordpress音乐页面下载苏州seo排名优化课程
  • 为什么做电影网站没有流量web网页模板
  • 网站建设目标与期望美食软文300字
  • swing做网站关于市场营销的100个问题
  • 温州高端网站建设公司百度快速查询