• asp.net双向链表类


    using System;  
    using System.Data;  
    using System.Configuration;  
    using System.Web;  
    using System.Web.Security;  
    using System.Web.UI;  
    using System.Web.UI.WebControls;  
    using System.Web.UI.WebControls.WebParts;  
    using System.Web.UI.HtmlControls;  
      
    /// <summary>  
    /// DListNode 的摘要说明  
    /// </summary>  
    public class DListNode  
    {  
        private int _data;  
        private DListNode _preNode;  
        private DListNode _nextNode;  
      
        public int data  
        {  
            get { return _data; }  
            set { _data = value; }  
        }  
      
        public DListNode preNode  
        {  
            get { return _preNode; }  
            set { _preNode = value; }  
        }  
      
        public DListNode nextNode  
        {  
            get { return _nextNode; }  
            set { _nextNode = value; }  
        }  
    }  
      
    public class DList  
    {  
        private DListNode _firstNode;  
        private int _count;  
      
        public int count  
        {  
            get { return _count; }  
            set { _count = value; }  
        }  
      
        public DListNode firstNode  
        {  
            get { return _firstNode; }  
            set { _firstNode = value; }  
        }  
      
        /// <summary>  
        /// 将对象添加到链表的结尾处  
        /// </summary>  
        /// <param name="element"></param>  
        public void Add(int element)  
        {  
            if (firstNode == null)//判断第一个节点是否为空  
            {  
                firstNode = new DListNode();//如果为空,新添加的就是第一个节点  
                firstNode.data = element;  
            }  
            else  
            {  
                DListNode dlTmp = firstNode;  
                //通过循环找到最后一个节点  
                while(true)  
                {  
                    if (dlTmp.nextNode == null)//插入新的节点  
                    {  
                        dlTmp.nextNode = new DListNode();  
                        dlTmp.nextNode.data = element;  
                        dlTmp.nextNode.preNode = dlTmp;  
                        break;  
                    }  
                    else  
                    {  
                        dlTmp = dlTmp.nextNode;  
                    }  
                }  
            }  
            this.count++;//链表长度加1  
        }  
      
        /// <summary>  
        /// 移除所有元素  
        /// </summary>  
        public void Clear()  
        {  
            this.firstNode = null;  
        }  
      
        /// <summary>  
        /// 搜索指定的对象的索引  
        /// </summary>  
        /// <param name="temp"></param>  
        /// <returns></returns>  
        public int indexOf(int temp)  
        {  
            DListNode dlTmp = this.firstNode;  
            int index = 0;  
            while (true)  
            {  
                //如果没有找到,则返回-1  
                if (dlTmp == null)  
                {  
                    return -1;  
                }  
                else  
                {  
                    if (dlTmp.data == temp)//找到则返回索引  
                    {  
                        return index;  
                    }  
      
                    dlTmp = dlTmp.nextNode;  
                    index++;  
                }  
            }  
        }  
      
        /// <summary>  
        /// 从链表中删除指定的工序  
        /// </summary>  
        /// <param name="temp"></param>  
        public void Delete(int temp)  
        {  
            DListNode dlTm = this.firstNode;  
            while (true)  
            {  
                if (dlTm == null)  
                {  
                    return;  
                }  
                else  
                {  
                    if (dlTm.data == temp)  
                    {  
                        DListNode dlPre = new DListNode();  
                        if (dlTm.preNode != null)  
                        {  
                            dlPre = dlTm.preNode;  
                            dlPre.nextNode = dlTm.nextNode;  
                            dlTm.nextNode.preNode = dlPre;  
                            dlTm = null;  
                        }  
                        else  
                        {  
                            this.firstNode = dlTm.nextNode;  
                            dlTm = null;  
                        }  
                        this.count--;  
                        break;  
                    }  
                    else  
                    {  
                        dlTm = dlTm.nextNode;  
                    }  
                }  
            }  
        }  
      
        /// <summary>  
        /// 向链表中添加指定的工序  
        /// </summary>  
        /// <param name="temp"></param>  
        public void Insert(int temp)  
        {  
            DListNode node = this.firstNode;  
            while (true)  
            {  
                if (node == null)  
                {  
                    return;  
                }  
                else  
                {  
                    DListNode newNode = new DListNode();  
                    newNode.data = temp;  
                    if (temp < node.data)  
                    {  
                        if (node.preNode == null)  
                        {  
                            node.preNode = newNode;  
                            newNode.nextNode = node;  
                            newNode.preNode = null;  
                            this.firstNode = newNode;  
                        }  
                        else  
                        {  
                            newNode.preNode = node.preNode;  
                            newNode.nextNode = node;  
                            node.preNode.nextNode = newNode;  
                            node.preNode = newNode;  
                        }  
                        this.count++;  
                        break;  
                    }  
                    else  
                    {  
                        node = node.nextNode;  
                    }  
                }  
            }  
        }  
    }  
    

      转自:http://blog.csdn.net/bydxyj/article/details/4394734

  • 相关阅读:
    iframe
    daterangepicker 时间区间选择
    刷新父窗口
    echars
    原生http请求封装
    css布局方式总结
    js获取http请求响应头信息
    js事件循环机制 (Event Loop)
    http协议的状态码
    javaScript函数节流与函数防抖
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2135446.html
Copyright © 2020-2023  润新知