C# LinkedList

 LinkedList

LinkedList是一个C#为我们封装好的类
它的本质是一个可变类型的泛型双向链表

申明

需要引用命名空间           using System.Collections.Generic


            LinkedList<int> linkedList = new LinkedList<int>();
            LinkedList<string> linkedList2 = new LinkedList<string>();
           

链表对象 需要掌握两个类

一个是链表本身 一个是链表节点类LinkedListNode

增删查改


            1.在链表尾部添加元素
            linkedList.AddLast(10);

            2.在链表头部添加元素
            linkedList.AddFirst(20);

            3.在某一个节点之后添加一个节点
              要指定节点 先得得到一个节点
            LinkedListNode<int> n = linkedList.Find(20);//通过值返回一个节点
            linkedList.AddAfter(n, 15);  //节点的后面加一个值为15的节点


            4.在某一个节点之前添加一个节点
              要指定节点 先得得到一个节点
            linkedList.AddBefore(n, 11);
 


            1.移除头节点
            linkedList.RemoveFirst();
            2.移除尾节点
            linkedList.RemoveLast();
            3.移除指定节点
            无法通过位置直接移除 通过存储的值来查找并移除  没有下标的概念
            linkedList.Remove(20);
            4.清空
            linkedList.Clear();

          

 查
            1.头节点
            LinkedListNode<int> first = linkedList.First;


            2.尾节点
            LinkedListNode<int> last = linkedList.Last;


            3.找到指定值的节点
              无法直接通过下标获取中间元素
              只有遍历查找指定位置元素

            LinkedListNode<int> node = linkedList.Find(3);
            Console.WriteLine(node.Value); // 这里控制台打印3


            node = linkedList.Find(5);


            4.判断是否存在
            if( linkedList.Contains(1) )
            {
                Console.WriteLine("链表中存在1");
            }
            


            要先得再改 得到节点 再改变其中的值
            linkedList.First.Value = 10;

遍历


            1.foreach遍历  直接得到值
            foreach (int item in linkedList)
            {
                Console.WriteLine(item);
            }

            2.通过节点遍历


              从头到尾
            LinkedListNode<int> nowNode = linkedList.First;
            while (nowNode != null)
            {
                Console.WriteLine(nowNode.Value);
                nowNode = nowNode.Next;
            }

            从尾到头
            nowNode = linkedList.Last;
            while (nowNode != null)
            {
                Console.WriteLine(nowNode.Value);
                nowNode = nowNode.Previous;
            }


using System.Collections;
using System.Linq;



class Program
{
    public static void Main()
    {
        LinkedList<int> list = new LinkedList<int>();
        Random rand = new Random();
        for (int i = 0; i < 10; i++)
        {
            list.AddLast(rand.Next(0,101));
        }
        LinkedListNode<int> node = list.First;
        while (node != null)
        {
            Console.WriteLine(node.Value);
            node = node.Next;
        }
        Console.WriteLine("-----------------------------");
        node = list.Last ;
        while (node != null)
        {
            Console.WriteLine(node.Value);
            node = node.Previous;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值