当前位置:网站首页 > 区块链基础 > 正文

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



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-09-02 10:00:04
  • 怎么点击图片跳转链接(怎么制作图片链接跳转)2025-09-02 10:00:04
  • a标签打开新窗口(a标签在新窗口打开链接添加什么属性)2025-09-02 10:00:04
  • 在新标签页中打开链接(在新标签页中打开链接是不是图片更清晰)2025-09-02 10:00:04
  • 单向链表冒泡排序(单向链表 排序)2025-09-02 10:00:04
  • 公众号跳转链接怎么弄(公众号如何设置跳转链接)2025-09-02 10:00:04
  • 跳转链接怎么制作(跳转链接代码怎么写)2025-09-02 10:00:04
  • 跳转链接怎么制作视频(怎样弄链接跳转到视频)2025-09-02 10:00:04
  • 双向链表比单向链表的优点(双向链表比单向链表的优点是什么)2025-09-02 10:00:04
  • cp1300怎么链接电脑(cp1300如何连接wifi打印)2025-09-02 10:00:04
  • 全屏图片