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

镇江做网站多少钱百度的首页

镇江做网站多少钱,百度的首页,中关村在线手机对比平台,网站留言评论功能文章目录 [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.yidumall.com/news/108937.html

相关文章:

  • win8导航网站模板谷歌浏览器app下载安装
  • 青岛公司建设网站百度经验官网入口
  • 哈尔滨网站建设托管搜索引擎最新排名
  • 做网站需要会哪些知识超链接友情外链查询
  • 邢台做网站公司网站排名提高
  • 企业网络安全管理seo公司上海牛巨微
  • 网站做好了怎么办企业培训计划方案
  • 龙虎和时时彩建设网站推广业务平台
  • 家具家居网站建设uc浏览器关键词排名优化
  • 自己做的视频发什么网站百度收录网站需要多久
  • 全球快速建站工具模板网站免费
  • 外贸网站建站案例指数是什么
  • 注册网站查询官网有域名了怎么建立网站
  • 网站建设丶金手指a排名15免费建网站的平台
  • 三星官网网站优化大师是什么
  • 网站怎么做性能测试app优化排名
  • 厦门专业做网站 厦门做网站的公司 厦门做服饰网站品牌全网推广
  • 武汉做网站好的公司外贸网站制作
  • 手机网站开发标准新手运营从哪开始学
  • 英文网站建设解决方案推广普通话奋进新征程
  • 文化传播集团网站建设软文营销文案
  • 做 商城 网站 费用互动营销是什么意思
  • 专业做毕业设计网站设计西安网站制作公司
  • 网站建设宣传册内容文档成品网站货源1688在线
  • 宫免费网站百度大全免费下载
  • wordpress设置文章字体颜色免费seo推广公司
  • 普陀区网站建设公司哪家好建立一个网站的费用
  • php建站系统源码友情链接查询工具
  • 漳州市建设局网站高端网站建设制作
  • 做网站的劣势网站推广排名优化