首页 > 代码库 > 双向链表
双向链表
相对于数组来说:
优点: 通过索引(数组下标)快地访问数组元素;
缺点: 插入/删除元素需要对数组进行调整, 效率低;
而链表:
优点:插入/删除速度快而且用对整链表进行调整;
缺点:只能进行顺序访问能随机访问(像数组样用下标);
所链表些需要快速插入/删除而太关心或者需要随机访问情况下使用.
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication4{ class DoubleLinkedList { private Node head; public void Add(int data) { if (head==null) { head = new Node(data); } else { head=head.Add(new Node(data)); } } public override string ToString() { if (head==null) { return string.Empty; } else { return this.head.ToString(); } } public class Node { //节点的值 private int data; private Node next; private Node prev; public Node(int data) { this.data =http://www.mamicode.com/ data; } public int Data { get { return this.data; } } public Node Add(Node newNode) { if (data > newNode.data) //传进来的值大于当前值 { newNode.next = this;//把传进来的值放到当前值前面去 if (this.prev!=null)//前面不为空 { this.prev.next = newNode; newNode.prev = this.prev; } this.prev = newNode; //设置当前节点的前一个节点为新节点 return newNode;//只有新节点为头节点时才返回 } else { if (this.next!=null) {//递归 this.next.Add(newNode); } else { this.next = newNode;//设置新节点为当前节点的下一节点 newNode.prev = this; } return this; } } public override string ToString() { string str = data.ToString(); if (next!=null) { str += " " + next.ToString(); } return str; } } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication4{ class Program { static void Main(string[] args) { DoubleLinkedList lst = new DoubleLinkedList(); lst.Add(1); lst.Add(3); lst.Add(9); lst.Add(2); lst.Add(6); lst.Add(5); lst.Add(8); Console.WriteLine( (lst.ToString())); Console.ReadLine(); } }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。