链表的反转、合并(不借助额外list数组)
链表的基本操作:线性表 (单链表、循环链表-python实现)
反转链表:
# -*- coding:utf-8 -*-
class ListNode:
def __init__(self, x):
self.val = x
self.next = None class Solution: def __init__(self,list):
self.head=ListNode(None)
self.list=list def listCreateForward(self):
temp = self.head
while self.list:
num = self.list.pop(0)
node = ListNode(num)
temp.next = node
temp = node
self.readList(self.head)
self.ReverseList(self.head) def ReverseList(self, pHead):
if pHead.next==None:
return pHead
head=ListNode(None)
while pHead.next.next!=None:
temp = pHead.next
pHead.next=pHead.next.next
temp.next=head.next
head.next=temp
node=pHead.next
node.next=head.next
head.next=node
self.readList(head) def readList(self,head):
temp =head
while temp.next != None:
temp = temp.next
print temp.val s=Solution([1,2,3,4,5,6])
s.listCreateForward()
合并链表:
# -*- coding:utf-8 -*-
class ListNode:
def __init__(self, x):
self.val = x
self.next = None class Solution: def __init__(self,list):
self.head=ListNode(None)
self.list=list def listCreateForward(self):
temp = self.head
while self.list:
num = self.list.pop(0)
node = ListNode(num)
temp.next = node
temp = node def readList(self,head):
temp =head
while temp.next != None:
temp = temp.next
print temp.val def Merge(self, pHead1, pHead2):
if not pHead1.next and not pHead2.next:
return
elif not pHead1.next:
return pHead2
elif not pHead2.next:
return pHead1
flag=0
temp=pHead1
temp1=temp.next
temp2=pHead2.next
while True: while temp1.val<temp2.val:
if temp1.next==None:
break
temp=temp1
temp1=temp.next node=temp2
if temp2.next == None:
flag=1
else:
temp2=temp2.next if temp1.next==None and temp1.val>node.val:
node.next = temp1
temp.next = node
temp = temp.next
elif temp1.next==None and temp1.val<node.val:
node.next=None
temp1.next=node
else:
node.next=temp1
temp.next=node
temp=temp.next
if flag==1:
break
return pHead1 s1=Solution([1,3,6,8,99,123])
s1.listCreateForward()
s2=Solution([2,3,5,7,11,13,15,16,18])
s2.listCreateForward()
s1.readList(s1.Merge(s1.head,s2.head))
链表的反转、合并(不借助额外list数组)的更多相关文章
- 理解单链表的反转(java实现)
要求很简单,输入一个链表,反转链表后,输出新链表的表头. 反转链表是有2种方法(递归法,遍历法)实现的,面试官最爱考察的算法无非是斐波那契数列和单链表反转,递归方法实现链表反转比较优雅,但是对于不 ...
- 02-线性结构1 两个有序链表序列的合并(15 point(s)) 【链表合并】
02-线性结构1 两个有序链表序列的合并(15 point(s)) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L ...
- 秒懂单链表及其反转(reverse)
什么是链表,这种数据结构是由一组Node组成的,这群Node一起表示了一个序列.链表是最普通,最简单的数据结构(物理地址不连续),它是实现其他数据结构如stack, queue等的基础. 链表比起数组 ...
- LeetCode初级算法--链表02:合并两个有序链表
LeetCode初级算法--链表02:合并两个有序链表 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...
- PTA 两个有序链表序列的合并
6-5 两个有序链表序列的合并 (15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L ...
- Java实现单链表的反转
思路1:初始化一个新的头节点reverseHead,然后遍历旧链表,利用头插法向reverseHead进行插入 思路2: 1.反转相当于数据的更换(1和n,2和n-1,3和n-2)n为链表的长度 2. ...
- PHP合并2个数字键数组的值
先要了解一个基础知识点:PHP数组合并+与array_merge的区别分析 & 对多个数组合并去重技巧 <?php /** * PHP合并2个数字键数组的值 * * @param arr ...
- 将一个JSON数组[{},{},{}]按一定规则合并到另一个JSON数组[{},{},{}]
// 将一个JSON数组[{},{},{}]按一定规则合并到另一个JSON数组[{},{},{}] // Object.assign方法的第一个参数是目标对象,后面的参数都是源对象. var list ...
- 【loj6041】「雅礼集训 2017 Day7」事情的相似度 后缀自动机+STL-set+启发式合并+离线+扫描线+树状数组
题目描述 给你一个长度为 $n$ 的01串,$m$ 次询问,每次询问给出 $l$ .$r$ ,求从 $[l,r]$ 中选出两个不同的前缀的最长公共后缀长度的最大值. $n,m\le 10^5$ 题解 ...
随机推荐
- flex 布局 计算器
flex布局计算器 <!doctype html> <html> <head> <style> .box{ display: flex; flex-di ...
- 学以致用十-----centos7.2+python3.6+vim8.1+YouCompleteMe
趟过了之前的坑后,再来安装YouCompleteMe 一.安装依赖包 yum install libXt-devel gtk2-devel yum -y install python-devel ru ...
- VIP之MixerII
1.VIP Mixer IIMixerII的每一个输入通道都必须通过Frame Buffer来或者Frame Reader驱动,才能保证数据在正确的时间送入到MixerII中.Downscale不能把 ...
- SQL常用增删改查
转 http://www.cnblogs.com/daxueshan/p/6687521.html 1增 1.1[插入单行]insert [into] <表名> (列名) values ( ...
- css设置自适应屏幕高度
<style type="text/css"> body,html{ margin:0; height:100%; /*这里将高度设置为100%是这个布局实现自适应高度 ...
- Android webview 开启地理位置定位
WebSettings webSettings = webView.getSettings(); webSettings.setDatabaseEnabled(true); String dir = ...
- SurfaceView+MediaPlayer播放视频
SurfaceView拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独立的线程中进行行绘制.又由于不占用主线程资源,SurfaceView一方面可以实现复杂而高效的UI,另一方面又不 ...
- utf8.php
<?php /** * */ class Utf8 { function __construct() { global $CFG; if( preg_match('/./u', '') === ...
- 三种初步简易的方法求解数值问题 of C++
1. “二分法解方程” 在二分法中,从区间[a,b]开始,用函数值f(a)与f(b)拥有相反的符号.如果f在这个区间连续,则f的图像至少在x=a,x=b之间穿越x轴一次,因此方程f(x)=0在[a,b ...
- java poi 合并单元格
java poi 合并单元格 2017年03月29日 16:39:01 翠烟你懊恼 阅读数:26561 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.n ...