2025年双向链表与单向链表区别(双向链表比单向链表的优点)

双向链表与单向链表区别(双向链表比单向链表的优点)n 个结点链结成一个链表 即为线性表的链式存储结构 因为此链表的 所以叫做 存储元素信息的域 存储的域 指针域中存储的信息称作 由和 链表中的 与的 a 头指针是链表指向的第一个结点的指针 若链表有头结点 则指向头结点的指针 b 头指针具有标识作用 常用头指针冠以链表的名字 c 无论链表是否为空 头指针均头指针是链表的 a 头结点是为了操作统一和方便设立的

大家好,我是讯享网,很高兴认识大家。



n个结点链结成一个链表,即为线性表的链式存储结构,因为此链表的,所以叫做

存储元素信息的域

存储的域,指针域中存储的信息称作。

由和

链表中的;

与的

 

 

            b. 头结点链表的

        (1)C#实现单链表的类

                     class LinkList<T>

                        {

                            private Node<T> head;//头指针

                            public Node<T> Head { get { return head; } set { head = value; } }

                            public LinkList()

                            {

                                head = null;

                            }

                            public int GetLength()

                            {

                                int len = 0;

                                Node<T> p = head;

                                while (p != null)

                                {

                                    p = p.Next;

                                    len++;

                                }

                                return len;

                            }

                            public void Clear()

                            {

                                head = null;

                            }

                           

                            public void Addend(T item)

                            {

                                Node<T> q = new Node<T>(item);

                                Node<T> p = new Node<T>();

                                if (head == null)

                                {

                                    head = q;

                                    return;

                                }

                                p = head;

                                while (p.Next != null)

                                {

                                   p = p.Next;

                                }

                                p.Next = q;

                            }

                           

                            public T GetItem(int i)

                            {

                                int j = 1; //计数器

                                Node<T> p = new Node<T>(); //声明一个指针p

                                p = head; //p指向链表的第一个节点

                                while (p != null && j < i) //如果p不为空,且j<i,那么循环就继续

                                {

                                    p = p.Next; //让p指向下一个节点

                                    ++j;

                                }

                                if (p == null || j > i) //如果P为空或者j>i则显示错误

                                {

                                    Console.WriteLine(“节点不存在”);

                                }

                                T value = p.Data; 

                                return value;

                            }

                         

                            public void Insert(int i, T value)

                            {

                                int j = 1;

                                Node<T> q = new Node<T>();

                                q = head;

                                //寻找i的位置

                                while (q != null && q.Next!=null && j < i)

                                {

                                    q = q.Next;

                                    ++j;

                                }

                                if (q == null || j > i)

                                {

                                    Console.WriteLine(“节点不存在”);

                                }


讯享网

                                Node<T> n = new Node<T>();

                                n.Data = value;

                                n.Next = q.Next;

                                q.Next = n;

                            }

                         

                            public void Delete(int i)

                            {

                                Node<T> p = new Node<T>(); //声明一个指针p

                                p = head; //p指向链表的第一个节点

                                int j = 1;

                                while (p.Next!=null&&j < i)

                                {

                                    p = p.Next;

                                    ++j;

                                }

                                if (p.Next == null || j > i)

                                {

                                    Console.WriteLine(“节点不存在”);

                                }

                                Node<T> q = new Node<T>();

                                q = p.Next;

                                p.Next = q.Next;

                            }

                        }

            class Node<T>

                {

                    private T data; //数据域

                    private Node<T> next; //指针域

                    public T Data { get { return data; } set { data = value; } }

                    public Node<T> Next { get { return next; } set { next = value; } }

                    public Node()

                    {

                        data = default(T);

                        next = null;

                    }

                    public Node(T value)

                    {

                        data = value;

                    }

                    public Node(Node<T> p)

                    {

                        next = p;

                    }

                    public Node(T val, Node<T> p)

                    {

                        data = val;

                        next = p;

                    }

                }

            class Program

                {

                    static void Main(string[] args)

                    {

                        LinkList<string> t = new LinkList<string>();

                        t.Addend(“我是第一个”);

                        t.Addend(“我是第二个”);

                        t.Addend(“我是第三个”);

                        t.Addend(“我是第四个”);

                        t.Insert(1, “我是新插入的第1个”);

                        string m = t.GetItem(1);

                        Console.WriteLine(“位置1的值:” + m); 

                        int len=  t.GetLength();

                        Console.WriteLine(“开始长度:” + len);

                        t.Delete(2);

                        int len2 = t.GetLength();

                        Console.WriteLine(“执行删除之后的长度:” + len2);

                        t.Clear();

                        int len3 = t.GetLength();

                        Console.WriteLine(“执行清空之后的长度:” + len3);

                        Console.ReadLine();

                    }

                }

:将单链表的改为,使整个单链表形成一个环。这种的链表成为

如何出发,

(2)循环链表与单链表的主要在与上。

(3)终端结点用表示

    (1)双向链表是在单链表的每个结点中,再设置一个。所以

   (2) 再插入和删除时,需要改变两个变量。要,实行实现,实现


小讯
上一篇 2025-06-05 21:12
下一篇 2025-05-28 13:13

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/179993.html