zoukankan      html  css  js  c++  java
  • 链表

    * 双向链表
    * 1. 双向链表只保存第一个节点和后一节点 以及大小(单向链表只保存第一个结点以及大小,通过链结点的next字段找其他结点)
    * 2. 通过第一节点可找到别的节点的数据

    class LinkList{
    Node head = new Node(); //头结点
    Node tail = new Node(); //尾结点
    int size = 0;
    public LinkList(){
    head.next = tail; //头的下一个为尾
    this.head.date = "head"; //头的数据
    tail.last = head; //尾的上一个为头
    tail.next = null; //尾的下一个为空
    this.tail.date = "tail"; //尾的数据
    }

    //内部节点类k
    class Node{
    String date; //数据域
    Node next; //指向下一个节点
    Node last; //指向上一个节点
    Node(){};
    Node(String date){
    this.date = date;
    this.next = null;
    this.next = null;
    }
    }

    //向链表中添加一个数据 在指定的位置上插入
    public void Insert(String date){
    Node newNode = new Node(date); //新建结点
    newNode.next = this.head.next; //新结点下一个为头结点的下一个
    newNode.last = this.head;
    this.head.next.last = newNode;
    this.head.next = newNode;
    System.out.println("插入数据"+date+"成功");
    this.size++;
    }

    //遍历链表输出
    public void PrintLink( LinkList linklist){
    Node preNode = new Node();
    preNode.next = this.head.next;
    System.out.print("遍历输出结果:");
    while(true){
    System.out.print(preNode.next.date+" -->");
    if(preNode.next.next.next == null) break;
    preNode.next = preNode.next.next;
    }
    System.out.println("遍历输出完成~~~");
    }

    //删除链表中的某一个数
    public void DeleteLink(String date){
    Node preNode = new Node();
    preNode = this.head;
    Node node = null;
    while(preNode.next != this.tail){

    node = preNode;
    preNode = preNode.next;
    if(preNode.date == date){
    node.next = preNode.next;
    System.out.println("删除元素"+date+"成功");
    this.size--;
    }
    }
    }
    }

    public class DoublyLinkList{
    //主函数测试
    public static void main(String[] args){
    LinkList linklist = new LinkList();
    linklist.Insert("lv1");
    linklist.Insert("lv2");
    linklist.Insert("lv3");
    linklist.Insert("lv4");
    linklist.Insert("lv5");
    linklist.Insert("lv6");
    linklist.Insert("lv7");
    linklist.Insert("lv8");
    linklist.Insert("lv9");
    linklist.Insert("lv0");
    linklist.Insert("lv11");
    linklist.Insert("lv12");
    linklist.Insert("lv13");
    linklist.Insert("lv14");
    System.out.println("链表的长度为:"+linklist.size);
    linklist.PrintLink(linklist);
    //删除lvbiao3
    linklist.DeleteLink("lv3");
    linklist.PrintLink(linklist);

    linklist.DeleteLink("lv14");

    linklist.DeleteLink("lv12");

    linklist.PrintLink(linklist);
    System.out.println("tail:"+linklist.tail.date);
    }
    }

  • 相关阅读:
    SSL原理
    花不是玫瑰的全部
    sqlserver2008数据类型说明
    js识别半角字符的正则表达式
    js全角字符转半角字符
    java 全角字符转半角
    MySQL数据目录结构
    git使用
    [iOS]MVVM-框架介绍
    圆形进度条
  • 原文地址:https://www.cnblogs.com/huangyin/p/5970002.html
Copyright © 2011-2022 走看看