加班后,余兴未了,写了个链表,呵呵放出来充实下blog先

原创 2007年10月12日 00:17:00
 /**//// <summary>
    
/// 结点
    
/// </summary>
    
/// <typeparam name="T">泛型对象</typeparam>

    internal class LNode<T>
    
...{
        
/**//// <summary>
        
/// 构造函数
        
/// </summary>

        public LNode()
        
...{
        }


        
/**//// <summary>
        
/// 构造函数 设置泛型值
        
/// </summary>
        
/// <param name="NodeValue">结点</param>

        public LNode(T NodeValue)
        
...{
            _Data 
= NodeValue;
        }


        
private T _Data=default (T) ;
        
/**//// <summary>
        
/// 值
        
/// </summary>

        public T Data
        
...{
            
get ...return _Data; }
            
set ...{ _Data = value; }
        }


        
private LNode<T> _Next=null ;
        
/**//// <summary>
        
/// 下一个节点
        
/// </summary>

        public LNode<T> Next
        
...{
            
get ...return _Next; }
            
set ...{ _Next = value; }
        }


    }

 

上面是结点

下面是表定义

 

 /**//// <summary>
    
/// 单链表
    
/// </summary>

    public class LinkList<T>
    
...{
        
/**//// <summary>
        
/// 构造函数
        
/// </summary>

        public LinkList()
        
...{
            
//表头等于表尾
            _EndNode = _HeadNode;
        }


        
/**//// <summary>
        
/// 索引
        
/// </summary>
        
/// <param name="index">索引ID</param>
        
/// <returns>结点值</returns>

        public T this[int index]
        
...{
            
get
            
...{
                
return GetData(index);
            }

            
set
            
...{
                Modify(index, value);
            }

        }


        
private int _Length = 0;
        
/**//// <summary>
        
/// 单链表长度
        
/// </summary>

        public int Length
        
...{
            
get ...return _Length; }
        }



        
private LNode<T> _HeadNode=new LNode<T> ();     //头结点
        private LNode<T> _EndNode = new LNode<T>();      //尾结点

        
/**//// <summary>
        
/// 寻找结点
        
/// </summary>
        
/// <param name="index">索引ID</param>
        
/// <returns>结点</returns>
        
/// <exception cref="System.IndexOutOfRangeException">索引号超出单链表长度</exception>

        private LNode<T> Find(int index)
        
...{
            
if (index >= _Length) throw new IndexOutOfRangeException("索引号超出单链表长度");
            LNode
<T> FindNode=new LNode<T> ();
            FindNode 
= _HeadNode.Next;
            
for (int iCount = 0; iCount < index; iCount++)
            
...{
                FindNode 
= FindNode.Next;
            }

            
return FindNode;
        }


        
/**//// <summary>
        
/// 得到结点值
        
/// </summary>
        
/// <param name="index">索引ID</param>
        
/// <returns>结点值</returns>

        public T GetData(int index)
        
...{
            
//索引不合法
            if (index < 0 || index >= _Length) return default(T);
            
//返回找到的值
            return Find(index).Data;
        }


        
/**//// <summary>
        
/// 表尾添加结点
        
/// </summary>
        
/// <param name="NodeValue">结点值</param>

        public void Append(T NodeValue)
        
...{
            LNode
<T> NewNode = new LNode<T>(NodeValue);
            _EndNode.Next 
= NewNode;
            _EndNode 
= NewNode;
            
if(_Length==0) _HeadNode .Next =NewNode ;
            
++_Length;
        }


        
/**//// <summary>
        
/// 插入表头
        
/// </summary>
        
/// <param name="NodeValue">结点值</param>

        public void InsertFirst(T NodeValue)
        
...{
            LNode
<T> ListNode = new LNode<T>(NodeValue);
            ListNode.Next 
= _HeadNode.Next;
            _HeadNode.Next 
= ListNode;
            
//如果为空表 尾结点设置
            if (_Length == 0) _EndNode = ListNode;
            
++_Length;
        }


        
/**//// <summary>
        
/// 插入结点 索引之前
        
/// </summary>
        
/// <param name="index">索引ID</param>
        
/// <param name="NodeValue">结点值</param>
        
/// <returns>true表示插入成功,false表示插入失败</returns>

        public bool InsertBefore(int index, T NodeValue)
        
...{
             
//如果小于长度 返回假
            if (index < 0 || index >= _Length) return false;
            
//如果为头结点
            if (index == 0)
            
...{
                LNode
<T> InsertNode = new LNode<T>(NodeValue);
                InsertNode.Next 
= _HeadNode.Next;
                _HeadNode.Next 
= InsertNode;
                
++_Length;
                
return true;
            }

            
//如果为中间结点
            LNode<T> FindNode = Find(index - 1);
            LNode
<T> InsNode=new LNode<T> (NodeValue );
            InsNode.Next 
= FindNode.Next;
            FindNode.Next 
= InsNode;
            
++_Length;
            
return true;
        }


        
/**//// <summary>
        
/// 插入结点 索引之后
        
/// </summary>
        
/// <param name="index">索引ID</param>
        
/// <param name="NodeValue">结点值</param>
        
/// <returns>true表示插入成功,false表示插入失败</returns>

        public bool InsertAfter(int index, T NodeValue)
        
...{
            
//如果小于长度 返回假
            if (index < 0 || index >= _Length) return false;
            
//如果为尾结点
            if (index == _Length-1)
            
...{
                Append(NodeValue);
                
return true;
            }

           
            
//如果为中间结点
            LNode<T> FindNode = Find(index);
            LNode
<T> InsertNode = new LNode<T>(NodeValue);
            InsertNode.Next 
= FindNode.Next;
            FindNode.Next 
= InsertNode;
            
++_Length;
            
return true;
        }


        
/**//// <summary>
        
/// 修改结点值
        
/// </summary>
        
/// <param name="index">索引ID</param>
        
/// <param name="NodeValue">结点值</param>
        
/// <returns>true表示修改成功,false表示修改失败</returns>

        public bool Modify(int index, T NodeValue)
        
...{
            
//索引不合法
            if (index < 0 || index >= _Length) return false;
            
//如果为尾结点
            if (index == _Length - 1)
            
...{
                _EndNode.Data 
= NodeValue;
                
return true;
            }

            
//如果为中间结点
             Find(index).Data =NodeValue ;
             
return true;
        }


        
/**//// <summary>
        
/// 删除结点值
        
/// </summary>
        
/// <param name="index">索引ID</param>
        
/// <returns>删除的结点值</returns>

        public T Delete(int index)
        
...{
            
//索引不合法
            if (index < 0 || index >= _Length) return default(T);
            
//如果为头结点
            if (index == 0)
            
...{
                LNode
<T> DelNode = _HeadNode.Next;
                _HeadNode.Next 
= DelNode.Next;
                
--_Length;
                
return DelNode.Data;
            }


            LNode
<T> FindNode = Find(index - 1);
            LNode
<T> DelNode2 = FindNode.Next;
            FindNode.Next 
= DelNode2.Next;             //也可以是FindNode.Next = FindNode.Next.Next
            --_Length;
            
return DelNode2.Data;
        }


       
       
    }

 

慢慢把他完善

用microsoft自带的类分词 10w 2秒,自己的大概要8秒左右,所以决定优化自己的基础类。一步一步来,慢慢优化

总有一天超越他。虽然已经解决10w分词1秒搞定,不过学无止境,所以day day study,day day up

 

好困啊,想睡觉,下班回家后 就不想睡觉

这是什么情况啊。气使人了
  • POLICEA10
  • POLICEA10
  • 2014年05月06日 17:43
  • 149

走过的2015

子在川上曰:“逝者如斯夫,不舍昼夜”,一眨眼,时间就从眼前划过,转瞬即逝~~~去年写总结的时候,我还是一个大四狗,如今我已步入社会,工作半载 去年经历了什么,我又有什么怎样的感触,我学到了什么,未来又...
  • qqHJQS
  • qqHJQS
  • 2016年02月19日 23:19
  • 1175

写了个Blog阅读器

自己为了浏览好多好多人的blog又懒得每天一个个网页的去访问,所以写了这个东西。这个小东西可以收集自己喜欢的所有blog网站,随个人喜好而打开浏览。测试完成,所以拿出来也让和我一样的懒人用用看,欢迎同...
  • mysoftbb
  • mysoftbb
  • 2005年09月21日 08:21
  • 671

菜鸟 写了个链表

typedef int DATATYPE; #define NULL 0 #include using namespace std; struct ListNode {  DATATYP...
  • qishuai84
  • qishuai84
  • 2013年09月21日 15:29
  • 255

今天加班,之后领导请吃饭

现在感觉天旋地转,我喝多了吗,领导酒桌上说的什么已经忘了一大半,
  • yueniaoshi
  • yueniaoshi
  • 2014年07月10日 23:00
  • 806

写了个WebBrowserHelper,先留着

class WebBrowserHelper     {         ///         /// 设置HTML控件显示文本,根据控件NAME值         ///      ...
  • l0f
  • l0f
  • 2012年03月03日 23:33
  • 861

坚守一万小时定律,为什么还是庸碌无为

坚守一万小时定律,为什么还是庸碌无为? 一万小时定律的提出,让很多人看到了成功的方法,他们坚信,只要努力工作超过一万小时,就能从平凡变成超凡,这也就是人们平常说的工作经验在五年以上,才可能成为行业内...
  • isuccess88
  • isuccess88
  • 2017年04月21日 22:05
  • 163

为什么说下班后4小时,无法改变你的人生?

“周三下午 5:30” 电脑屏幕右上角显示。 你从无聊工作里深吸一口气,喝一口水。告诉自己,还有30分钟—— 然后……开始自己想要的人生! 下班后的你会读1小时书,然后学一门手绘课,还会写写...
  • Tiger_lin1
  • Tiger_lin1
  • 2018年03月03日 09:32
  • 28

今天写了个链表,好累。

#include #include #include #define TRUE 1 #define FALSE 0 #define EXIT 0 //定义结点 struct nodetype { ...
  • cpprogrammer
  • cpprogrammer
  • 2011年10月12日 18:46
  • 267

行业人数激增的同时,程序员记得平时没有空闲,时时充电

当时看《天才知道》的时候有一个女生叫马旭,她说:我不是在学习新知识,就是在去学习新知识的路上。当时觉得这句话真的好难做到。因为有太多的干扰因素了,如果你的自制力并不是那么强,记住:要么出众,要么出局就...
  • qq_34113388
  • qq_34113388
  • 2017年04月05日 12:02
  • 816
收藏助手
不良信息举报
您举报文章:加班后,余兴未了,写了个链表,呵呵放出来充实下blog先
举报原因:
原因补充:

(最多只允许输入30个字)