java实现单链表就地逆置,20. 微软面试题:单链表就地逆放
题目是:链表操作,单链表就地逆置
分析:
这题只需要设置三个指针就搞定了,ListNode* p 表示当前指针, ListNode* fp: 上一个节点指针, ListNode * ep :下一个节点指针
p ->next = fp;
fp = p;
p = ep
ep = p->next;
具体实现如下:
#include
using namespace std;
struct ListNode{
ListNode(int _v):value(_v), next(NULL){}
int value;
ListNode* next;
void add(ListNode* _ln)
{
if(next == NULL)
next = _ln;
else
next->add(_ln);
}
};
void invertList(ListNode* &root)
{
ListNode *fp, *p, *ep;
p = root;
fp = NULL;
while(p!= NULL)
{
ep = p->next;
p->next = fp;
fp = p;
p = ep;
}
root = fp;
return;
}
int main()
{
ListNode *root = NULL;
ListNode n1(0);
ListNode n2(1);
ListNode n3(2);
ListNode n4(3);
ListNode n5(4);
root = &n1;
root->add(&n2);
root->add(&n3);
root->add(&n4);
root->add(&n5);
ListNode* p = root;
while(p != NULL)
{
cout<< p->value << " " ;
p = p->next;
}
cout << endl;
invertList(root);
cout << "after invert: ";
p = root;
while(p != NULL)
{
cout<< p->value << " " ;
p = p->next;
}
cout << endl;
}
输出结果为:
0 1 2 3 4
after invert: 4 3 2 1 0
java实现单链表就地逆置,20. 微软面试题:单链表就地逆放相关推荐
- python实现带头结点的单链表的就地逆置_6-1 带头结点的单链表就地逆置 (10 分)...
本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置 ...
- python实现带头结点的单链表的就地逆置_带头结点的单链表就地逆置
本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置 ...
- 设计一代码,逆置带头结点的动态单链表L
有两种方法: 一是:用头插法建立单链表,自然而然就实现了逆置的动态链表. 代码: #include<stdio.h> #include<malloc.h> typedef in ...
- 试编写一个将双向循环链表逆置的算法_图解:链表的快慢指针,解决 80% 的链表面试题!...
一.前言 链表是基本的数据结构之一,它与数组不同,数组在内存中存储,需要一块连续的内容空间来存储,对内存的要求比较高.例如我们需要 100MB 大小的数组,内存中就必须有一段连续的 100MB 的内存 ...
- 微软面试题 单向链表找环
已知一个单向链表 如何检查这个单向链表中有没有环的存在 例如 a->b->c->d->e->b 就是一个环 我自己能想到的最佳算法就是O(n)的.... 话说这个题目真是 ...
- PTA 6-1 单链表逆置
PTA 6-1 单链表逆置* (20 分) 已知单链表的结点结构定义如下: typedef struct NODE { int data; struct NODE *next; } NODE; 说明: ...
- 单链表就地逆置(Java版)
题目:有一个线性表(a1,a2,a3,...,an),采用带头节点的单链表L存储,设计一个算法将其就地逆置,线性表变为(an,...a3,a2,a1).所谓"就地"指辅助存储空间为 ...
- java实现单链表就地逆置,单链表的就地逆置讲解
{ List *q; List *p = L->next; L -> next = NULL; //单链表就地逆置 while (p != NULL) { q = p -> next ...
- 链表就地逆置Java_单链表就地逆置(Java版)
题目:有一个线性表(a1,a2,a3,...,an),采用带头节点的单链表L存储,设计一个算法将其就地逆置,线性表变为(an,...a3,a2,a1).所谓"就地"指辅助存储空间为 ...
最新文章
- C# TCPClient简单示例
- ups的空开、电缆及电池的配置计算
- python提示错误TypeError: 'dict_keys' object does not support indexing
- 数据库提示:正在还原中,无法访问 应该怎么办?
- 【重点突破】—— React实现富文本编辑器
- android代码删除sd卡文件在哪里,android - 如何从SD卡中删除文件?
- Visual Studio 2013中因SignalR的Browser Link引起的Javascript错误一则
- Java8+函数式开发库Vavr使用入门
- 一个事务复制的bug--更新丢失 续
- 微信小程序电商实战-购物车(下)
- Visual Studio + VAssistX常用快捷键收藏
- java 二叉树详解 + 实现代码
- nanomsg 高性能通信库_NanoMsg框架|NanoMsg的简介
- linux应用开发 — 控制LED设备
- css背景图与html插入img的区别,css背景图与html插入img的区别
- 网络游戏外挂制作(3)
- 查询个人电脑当前公网IP地址
- 小米笔记本 wifi linux,被小米笔记本的WiFi坑了一道
- RF01 RF环境搭建及简介
- 不惑之年一次性通过软考高项的苦与乐
热门文章
- Linux驱动视频教程推荐,隆重推荐:linux驱动基础开发系列免费教程独家版本
- docker privileged mode
- 使用qemu运行银河麒麟操作系统
- Python爬虫视频课程:中国女性胸部大小分析-李宁-专题视频课程
- 闵行区科技小巨人工程申请条件及奖励政策解读
- 网易新闻页面信息抓取(htmlagilitypack搭配scrapysharp)
- 用fluent模拟内循环床气化燃烧(调试过程记录)
- 自考那些事儿(五):软件开发工具(实践篇)
- 多门店共享无人自助洗车系统小程序开发
- MCD19A2 MAIAC AOD 数据处理(三)均值+同日镶嵌+重投影(Grid转经纬度)