zoukankan      html  css  js  c++  java
  • 移除链表中重复的元素

    先上题目 

    给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。 
    尝试这做了一些,下面上代码
      public static ListNode Remove(ListNode head, int val)
            {
                ListNode A = head;
                ListNode b = null;
                //排除表头值相等
    
             
                //先不去管当前的表头的 val是否相等;
                while (A.next != null)
                {
                 
                    if (A.next.val == val)
                    {  //b就是相等的结点
                        b = A.next;
                        //判断b的next是否为空
                       if (b.next == null)
                        {   //这里为什么不写b.next=Null;
                            //进行到这里就要跳出循环了
                            // 现在我们的b没有进行任何赋值操。
                            //b再这里不属于链表的
                            //A.属于链表
                            A.next = null;
                                break;
                        }
                        //把b的下一个结点给a的下一个结点。
                        //A.next 结点存储的当前val相等的结点的位置
                        // A.next = b.next; 就是把当前 b.next的地址给A.next,
                        //原本存在A.next里面的结点,指向的位置发生了改变,到了b.next的位置
                        A.next = b.next;
                       
                    }
                    else
                    {    //就是循环链表
                        A = A.next;
                    }
                  
                }
                //最后再考虑当前的表头的val是否相等
                //如果相当,就把表头的next结点的地址给head,
                if (head.val == val)
                {
                    head = head.next;
                }
                return head;
            }
      ListNode a = new ListNode(3);
               
                ListNode b = new ListNode(2);
                ListNode c = new ListNode(3);
                ListNode d = new ListNode(3);
                ListNode e = new ListNode(3);
                ListNode f = new ListNode(5);
                ListNode g = new ListNode(3);
                a.next = b;
                b.next = c;
                c.next = d;
                d.next = e;
                e.next = f;
                f.next = g;
               ListNode head=  Remove(a, 3);
                ListNode s = head;
                //Console.WriteLine(s.next.val);
               ListNode B = new ListNode(0);
                B = head;
                while (B != null)
                {
                    Console.WriteLine(B.val);
                    B = B.next; ;
                }
                //Console.WriteLine(s.val);
                Console.ReadKey();

  • 相关阅读:
    SQL学习
    FOR XML PATH
    IOS学习网址
    weak nonatomic strong等介绍(ios)
    UVALive3045 POJ2000 ZOJ2345 Gold Coins
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA10905 Children's Game
  • 原文地址:https://www.cnblogs.com/wscar/p/6486439.html
Copyright © 2011-2022 走看看