コード例 #1
0
        public bool Equals(SingleLinkedNode n)
        {
            // If parameter is null return false:
            if ((object)n == null)
            {
                return(false);
            }

            // Return true if the fields match:
            return(Value == n.Value);
        }
コード例 #2
0
        public bool Delete(object value)
        {
            if (Header == null)
            {
                return(false);
            }

            SingleLinkedNode preNode      = null;
            SingleLinkedNode visitingNode = Header;

            while (visitingNode != null && !visitingNode.Value.Equals(value))
            {
                preNode      = visitingNode;
                visitingNode = visitingNode.NextNode;
            }
            if (visitingNode != null)
            {
                if (preNode == null)
                {
                    if (visitingNode.NextNode != null)
                    {
                        Header = Header.NextNode;
                    }
                    else
                    {
                        Header = null;
                        Tailer = null;
                    }
                }
                else
                {
                    if (visitingNode.NextNode != null)
                    {
                        preNode.NextNode = visitingNode.NextNode;
                    }
                    else
                    {
                        preNode.NextNode = null;
                        Tailer           = preNode;
                    }
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #3
0
        public bool Contains(object value)
        {
            SingleLinkedNode visitingNode = Header;

            while (visitingNode != null && !visitingNode.Value.Equals(value))
            {
                visitingNode = visitingNode.NextNode;
            }

            if (visitingNode == null)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
コード例 #4
0
        public IEnumerable <SingleLinkedNode> ReverseTravel()
        {
            SingleLinkedNode node = Tailer;

            while (node != null)
            {
                yield return(node);

                SingleLinkedNode preNode = node == Header ? null : Header;

                while (preNode != null && preNode.NextNode != node)
                {
                    preNode = preNode.NextNode;
                }

                node = preNode;
            }
        }
コード例 #5
0
        public void Insert(object value)
        {
            SingleLinkedNode newNode = new SingleLinkedNode()
            {
                Value    = value,
                NextNode = null,
            };

            if (Header == null)
            {
                Header = newNode;
                Tailer = newNode;
            }
            else
            {
                if (Tailer != null)
                {
                    Tailer.NextNode = newNode;
                    Tailer          = newNode;
                }
            }
        }