首页 > 代码库 > 双向链表实例
双向链表实例
package com.wyl.linklist; /** * 双向链表,实现26个字母的循环输出 * @author wyl * */ public class MyBinaryLink { private Node head; //定义双线链表的头结点 /** * 定义双向链表的节点类 */ class Node{ private char data; //节点的值 private Node prior; //前驱节点 private Node next; //后继节点 public Node() { } public Node(char data) { this(data, null, null); } public Node(char data, Node prior, Node next) { this.data =http://www.mamicode.com/ data; this.prior = prior; this.next = next; } public char getData() { return data; } public void setData(char data) { this.data =http://www.mamicode.com/ data; } public Node getPrior() { return prior; } public void setPrior(Node prior) { this.prior = prior; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } } /** * 构造函数初始化双向链表 */ public MyBinaryLink(){ head = new Node(‘A‘, null, null); Node p = head; int i=1; for(;i<26;i++){ if(p.next == null){ char data = http://www.mamicode.com/(char) (‘A‘ + i); Node newNode = new Node(data, p, null); p.next = newNode; p = p.next; } } p.next = head; head.prior = p; } /** * 打印双向链表的值 */ public void print(){ Node p = head; while(p.next != head){ System.out.print(p.data + "、"); p = p.next; } System.out.print(p.data); } /** * 从链表的某个位置开始打印 * @param num 表示从链表的第几个位置开始打印 */ public void printFrom(int num){ int i = 1; Node p = head; Node rear = head.prior; //找到链表的尾节点 Node start ; if(num > 0){ for(;i<num;i++){ p = p.next; } start = p; while(p.next != start){ System.out.print(p.data); p = p.next; } System.out.print(p.data); }else{ for(;i<-num;i++){ rear = rear.prior; } start = rear; while(rear.next != start){ System.out.print(rear.data); rear = rear.next; } System.out.print(rear.data); } } public static void main(String[] args) { MyBinaryLink myBinaryLink = new MyBinaryLink(); myBinaryLink.print(); System.out.println(); myBinaryLink.printFrom(4); System.out.println(); myBinaryLink.printFrom(-2); } }
双向链表实例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。