转贴-- 单向链表的实现 C# http://blog.youkuaiyun.com/a497785609/archive/2009/09/29/4617692.aspx

本文介绍了一种使用C#实现单向链表的方法,包括添加、插入、删除元素等核心操作,并通过实例演示了如何创建和操作单向链表。

转贴-- 单向链表的实现 C#  http://blog.youkuaiyun.com/a497785609/archive/2009/09/29/4617692.aspx


using System ;  
public class LinkedList  
{  
    //嵌套类表示单个节点;  
    private class Node  
    {  
        public Node (object values)  
        {  
            item=values ;  
        }  
        public object item; //数据域;  
        public LinkedList.Node next;//指针域;  
        public override string ToString()  
        {  
            return item.ToString ();  
        }  
    }  
    private int count;//记录元素个数;  
    public int Count  
    {  
        get {return this.count ;}  
    }  
    private Node head;//头指针;  
    public object this[int index]//索引器;  
    {  
        get {return GetByIndex (index).item;}  
        set{GetByIndex (index).item=value ;}  
    }  
      
    //①添加元素;  
    public void Add(object values)  
    {  
        Node newNode=new Node (values);  
        if(head ==null ) //如果头指针为空;  
        {  
            head =newNode ;  
        }  
        else 
        {  
            GetByIndex(count-1).next=newNode; //插到链表结尾;  
        }  
        count ++; //链表长度+1;  
    }  
      
    //②在指定索引处插入元素;  
    public void Insert(int index,object values)  
    {  
        Node tempNode;  
        if(index ==0)  
        {  
            if(head ==null )  
            {  
                tempNode =new Node (values );  
                tempNode.next =head ;  
                head =tempNode ;  
            }  
        }  
        else 
        {  
            Node preNode=GetByIndex(index-1); //找插入节点的前驱;  
            Node nextNode=preNode.next ;  //找插入节点的后继结点;  
            tempNode =new Node (values);  
            preNode.next =tempNode;  
            tempNode.next =nextNode ;  
        }  
        count ++;  
    }  
      
    //③删除指定索引元素;  
    public void RemoveAt(int index)  
    {  
        if (index ==0) //删除节点为头指针;  
        {  
            head =head.next ;  
        }  
        else 
        {  
            Node preNode=GetByIndex(index-1);  
            if(preNode.next ==null)  
            {  
                throw new ArgumentOutOfRangeException("index","索引超出范围!");  
            }  
            preNode.next =preNode.next.next ;  
        }  
        count --;  
    }  
      
    public override string ToString()  
    {  
        string s="";  
        for(Node temp=head; temp!=null; temp=temp.next)  
        {  
            s+=temp.ToString ()+" ";  
        }  
        return s;  
    }  
      
    private Node GetByIndex(int index)  
    {  
        if((index <0)||(index >= this.count ))  
        {  
            throw new ArgumentOutOfRangeException("index","索引超出范围!");  
        }  
        Node tempNode=this.head ;  
        for(int i=0;i<index ;i++)  
        {  
            tempNode=tempNode.next ;  
        }  
        return tempNode ;  
    }  
}  
class App  
{  
    static void Main()  
    {  
        LinkedList lst=new LinkedList ();  
        Console .WriteLine("①添加元素:");  
        lst .Add (0);  
        lst .Add (1);  
        lst .Add (2);  
        lst .Add (3);  
        Console .WriteLine(lst.ToString());  
          
        Console .WriteLine("②在2号位置,添加元素50:");  
        lst .Insert (2,50);  
          
        Console .WriteLine(lst.ToString());  
              
        Console .WriteLine("③移除1号元素:");  
        lst.RemoveAt(1);  
        Console .WriteLine(lst.ToString());  
              
        Console .WriteLine("④把2号元素赋值为9:");                
        lst [2]=9;  
        Console .WriteLine(lst.ToString());  
    }  


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/a497785609/archive/2009/09/29/4617692.aspx

<think>好的,我现在要处理用户的问题,他让我介绍一篇优快云上的学习笔记,链接是https://blog.csdn.net/Y1RV1NG/article/details/129506448?spm=1001.2014.3001.5501。不过,我需要先确认自己是否能够访问这个链接,但根据指示,我不能直接访问外部链接。所以,我需要基于用户提供的URL结构和常见的学习笔记内容来推测并合理回答。 首先,用户提供的链接看起来是关于某个技术主题的配套学习笔记,可能涉及编程、算法或者其他计算机科学相关的内容。通常优快云上的文章标题会包含关键词,比如“配套学习笔记”可能意味着该笔记与某个课程或书籍相关,可能是对某个知识点的总结或教程。 接下来,我需要按照用户的要求,结构清晰地分步骤介绍这篇学习笔记。由于无法查看具体内容,我需要保持回答的通用性,同时尽量覆盖可能的内容点。例如,可能涉及的主题包括数据结构、算法、编程语言教程、开发工具使用等。 用户还特别提到系统级指令中关于数学表达式的格式要求,因此在回答中如果有涉及数学公式的地方,需要正确使用$...$和$$...$$的格式。不过,当前的问题主要是介绍学习笔记,可能不需要太多数学公式,但需要注意如果有相关内容的话要正确应用格式。 需要确保回答使用中文,结构清晰,分步骤或分点说明。同时,需要提醒用户由于无法访问链接,回答基于常见内容推测,建议用户直接访问链接获取详细信息。 最后,检查是否所有要求都满足:结构清晰、步骤分明、使用正确的中文和LaTeX格式(如果有的话),并且没有使用Markdown格式,保持自然的口语化表达。</think>由于我无法直接访问外部链接,以下关于该优快云学习笔记内容的分析基于链接结构和常见技术博客特征推测,建议您直接访问链接获取详细信息: **推测内容方向(基于常见技术学习笔记)**: 1. **主题领域** - 链接中的文章编号 `129506448` 对应内容可能涉及: - 编程语言教程(如Python/Java进阶) - 算法与数据结构解析 - 软件开发实战案例 - 人工智能/机器学习基础 2. **典型结构推测** 技术类学习笔记通常包含: - **知识框架梳理**:用树状图或列表总结核心概念,例如: $$ \text{数据结构} \supset \{ \text{链表}, \text{二叉树}, \text{哈希表} \} $$ - **重点难点解析**:对易错点如指针操作、递归复杂度等进行公式化说明,例如: 快速排序时间复杂度 $T(n) = 2T(n/2) + O(n)$ - **代码示例**:可能附带代码片段及注释,如Python的装饰器实现: ```python def decorator(func): def wrapper(*args): print("函数执行前") return func(*args) return wrapper ``` 3. **推荐使用场景** - 适合作为教材的补充资料,帮助理解抽象概念 - 可通过笔记中的习题自测学习效果 - 建议配合代码实践加深记忆 **温馨提示**:如需了解文章具体内容,请复制链接至浏览器打开。访问时注意: - 关注评论区获取其他读者的学习反馈 - 检查文章发布时间确保技术时效性 - 使用Ctrl+F快速定位关键术语
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值