LaLaland(Zip two Lists)链表
Zip two Lists
将两个链表链接到一起,考验我们对引入类型的属性程度
不能使用List,而是自己定义类来存储数据
点击查看代码
class Test
{
static void Main(string[] arg)
{
var list1=MakeList(1,3,5,7,8);
var list2=MakeList(2,4,6,9,11,12,13,14);
var link=MakeLink(list1,list2);
PrintList(link);
}
static Nope MakeLink(Nope a,Nope b)
{
//此时zipper与head指向同块内存地址
Nope head=new Nope(),zipper=head; //单向链表dummy head
while(true)
{
if(a==null)
{
zipper.next=b;
break;
}
if(b==null)
{
zipper.next=a;
break;
}
if(a.val<=b.val)
{
zipper.next=a;
a=a.next;
}else
{
zipper.next=b;
b=b.next;
}
zipper=zipper.next; //此时zipper所指向的就是head中next所在的类的内存空间地址
}
return head.next;
}
static Nope MakeList(params int[]a)
{
Nope head=null;
for(int i=a.Length-1;i>=0;i--)
{
head=new Nope(){val=a[i],next=head};
}
return head;
}
static void PrintList(Nope a)
{
while(a!=null)
{
System.Console.WriteLine(a.val);
a=a.next;
}
}
}
class Nope
{
public int val;
public Nope next;
}
}
可以简化为
点击查看代码
class Test
{
static void Main(string[] arg)
{
var list1=MakeList(1,3,5,7,8);
var list2=MakeList(2,4,6,9,11,12,13,14);
var link=MakeLink(list1,list2);
PrintList(link);
}
static Nope MakeLink(Nope a,Nope b)
{
//此时zipper与head指向同块内存地址
Nope head=new Nope(),zipper=head; //单向链表dummy head
while(a!=null&&b!=null)
{
if(a.val<=b.val)
{
zipper.next=a;
a=a.next;
}else
{
zipper.next=b;
b=b.next;
}
zipper=zipper.next; //此时zipper所指向的就是head中next所在的类的内存空间地址
}
// zipper.next=a==null?b:a; //方法一
zipper.next=a??b;//方法二
return head.next;
}
static Nope MakeList(params int[]a)
{
Nope head=null;
for(int i=a.Length-1;i>=0;i--)
{
head=new Nope(){val=a[i],next=head};
}
return head;
}
static void PrintList(Nope a)
{
while(a!=null)
{
System.Console.WriteLine(a.val);
a=a.next;
}
}
}
class Nope
{
public int val;
public Nope next;
}
}
逆序相加

点击查看代码
public class Solution {
public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
ListNode head=new ListNode(0),Zipper=head;
int sum=0; //对位相加的值
int nAdd=0; //十进制进位
while(l1!=null||l2!=null||nAdd!=0)
{
int n1=l1==null?0:l1.val;
int n2=l2==null?0:l2.val;
sum=n1+n2+nAdd;
nAdd=sum/10;
Zipper.next=new ListNode(sum%10);
Zipper=Zipper.next;
l1 = l1?.next;
l2 = l2?.next;
}
return head.next;
}
}

浙公网安备 33010602011771号