zoukankan      html  css  js  c++  java
  • C#数据结构之双向链表

    链表定义:

    public class Node
        {
            public object Element;
            //指向下一个节点的链接
            public Node FLink;
    
            //指向上一个节点的链接
            public Node BLink;
    
            public Node()
            {
                Element = null;
                FLink = null;
                BLink = null;
            }
    
            public Node(object theElement)
            {
                Element = theElement;
                FLink = null;
                BLink = null;
            }
        }

    链表操作类:

    public class LinkedList
        {
            //头结点
            protected Node Header;
    
            public LinkedList()
            {
                Header = new Node("header");
            }
    
            private Node Find(object item)
            {
                Node current = new Node();
                current = Header;
                while (current.Element != item)
                {
                    current = current.FLink;
                }
                return current;
            }
    
            public void Insert(object newItem, object after)
            {
                Node current = new Node();
                Node newNode = new Node(newItem);
                current = Find(after);
                newNode.FLink = current.FLink;
                newNode.BLink = current;
                current.FLink = newNode;
            }
    
            public void Remove(object n)
            {
                //找到要删除的节点
                Node p = Find(n);
                if (!(p.FLink == null))
                {
                    //把此节点的向后连接属性设置为指向此节点的前连接所指向的节点
                    p.BLink.FLink = p.FLink;
                    p.FLink.BLink = p.BLink;
                    p.FLink = null;
                    p.BLink = null;
                }
            }
    
            private Node FindLast()
            {
                Node current = new Node();
                current = Header;
                while (!(current.FLink == null))
                {
                    current = current.FLink;
                }
                return current;
            }
    
            //反向打印链表
            public void PrintReverseList()
            {
                Node current = new Node();
                current = FindLast();
                while (!(current.BLink == null))
                {
                    Console.WriteLine(current.Element);
                    current = current.BLink;
                }
            }
        }
  • 相关阅读:
    flex4的s:states和mx:states的区别
    Flash Builder快捷键
    PE经典DIY案例1:全解开方案让量产PE也能
    U+V2深度隐藏PE制作技术初探
    SQL Server存储过程的删除方法
    利用sql server直接创建日历
    推荐一个好的数据库工具Embarcadero DBArtisan
    css样式大全(整理版)
    asp.net Excel导入&导出
    SQL删除重复数据方法
  • 原文地址:https://www.cnblogs.com/pengdotnet/p/2971037.html
Copyright © 2011-2022 走看看