AddressMatch.AddrSet.Delete C# (CSharp) Méthode

Delete() public méthode

Delete a node from graph
public Delete ( GraphNode node ) : bool
node GraphNode The node to be deleted
Résultat bool
        public bool Delete(GraphNode node)
        {
            //Delete from NodeTable
            Hashtable table = AddrSet.AddrGraph.NodeTable;
            TableNode tnodelist = table[node.Name] as TableNode;

            //find the relevant node in NodeList
            TableNode tnode = tnodelist;
            while (tnode.Next != null)
            {
                if (tnode.GNode.ID == node.ID)
                {
                    break;
                }
                tnode = tnode.Next;
            }
            if (tnode.GNode.ID != node.ID)
            {
                //Not found in NodeList
                return false;
            }

            if (tnode.Prev == null)          // this node is head
            {
                tnode.Next.Prev = null;
                table.Remove(node.Name);
                table.Add(node.Name,tnode.Next);
            }
            else if(tnode.Next == null)   //this node is tail
            {
                tnode.Prev.Next = null;
            }
            else
            {
                tnode.Prev.Next = tnode.Next;
                tnode.Next.Prev = tnode.Prev;
            }

            //Delete from Graph
            List<GraphNode> gnodelist = RetrievalGraph(delegate(GraphNode p)
            {
                if (p.NextNodeList.Contains(node))
                {
                    return true;
                }
                else
                {
                    return false;
                }

            });

            foreach (GraphNode resultnode in gnodelist)
            {
                resultnode.NextNodeList.Remove(node);
                AddrGraph.NodeCount--;
            }

            return true;
        }