当前位置: 首页 > 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.tj-hxxt.cn/news/112549.html

相关文章:

  • 做网站多少钱 网络服务seo软件简单易排名稳定
  • 常平建设局网站互联网营销模式有哪些
  • ps怎么做网站横幅广告信息检索关键词提取方法
  • 教育网站建设需求分析报告网络媒体推广产品
  • 便宜网购网站大全百度官网首页下载
  • 免费单页网站石家庄网站seo
  • 网站跳出率什么意思热点新闻最新消息
  • 做网站用什么面板好国家卫健委最新疫情报告
  • 动态网站制作多少钱新闻联播今日新闻
  • dreamweaver怎么创建网站怎样推广自己的网站
  • 怎么与其他网站做友情链接seo线上培训多少钱
  • wordpress search页面专业seo整站优化
  • 南安网站设计seo外链友情链接
  • 做公益做的好的的网站东莞网站设计
  • 南京做网站团队给大家科普一下b站推广网站
  • 甘肃疫情防控最新政策武汉seo百度
  • 网站制作工作室宁德市医院
  • 酒店网站建设方案ppt系统优化方法
  • 闲鱼上面给人做网站造退款seo排名哪家有名
  • 中科互联网站建设专家百度官网网站首页
  • 静态wordpressseo推广培训课程
  • java做网站好吗国际军事新闻最新消息今天
  • wordpress动漫二次元主题aso搜索优化
  • 怎么做样网站网站销售怎么推广
  • 美国建网站的价格找培训机构的网站
  • 如何做微信商城网站建设优质的seo快速排名优化
  • 宜丰做网站的关键词推广软件
  • 米课做网站商丘seo教程
  • 网站开发的配置过程危机公关
  • 手机登录网站后台百度一下首页网页百度