Beispiel #1
0
        //Followup
        //method: keep 2 pointers (runner's tech)
        static void removeDupe2(SingleLinkNode head)
        {
            SingleLinkNode p1 = head;
            SingleLinkNode p2;
            while (p1 != null) {
                p2 = p1;
                while (p2.next != null) {
                    if (p2.next.data == p1.data) {
                        p2.next = p2.next.next;
                    }

                    p2 = p2.next;
                }
                p1 = p1.next;
            }
        }
Beispiel #2
0
        //method: using a hash table
        static void removeDupe(SingleLinkNode head)
        {
            SingleLinkNode n = head;
            SingleLinkNode prev = null;
            HashSet<int> checker = new HashSet<int>();

            while (n != null) {
                if (checker.Contains(n.data))
                {
                    prev.next = n.next;
                }
                else {
                    checker.Add(n.data);
                    prev = n;
                }
                n = n.next;
            }
        }
Beispiel #3
0
        //Followup
        //method: keep 2 pointers (runner's tech)
        static void removeDupe2(SingleLinkNode head)
        {
            SingleLinkNode p1 = head;
            SingleLinkNode p2;

            while (p1 != null)
            {
                p2 = p1;
                while (p2.next != null)
                {
                    if (p2.next.data == p1.data)
                    {
                        p2.next = p2.next.next;
                    }

                    p2 = p2.next;
                }
                p1 = p1.next;
            }
        }
Beispiel #4
0
        //method: using a hash table
        static void removeDupe(SingleLinkNode head)
        {
            SingleLinkNode n       = head;
            SingleLinkNode prev    = null;
            HashSet <int>  checker = new HashSet <int>();

            while (n != null)
            {
                if (checker.Contains(n.data))
                {
                    prev.next = n.next;
                }
                else
                {
                    checker.Add(n.data);
                    prev = n;
                }
                n = n.next;
            }
        }