疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java程序设计之循环链表


 

   

  照例来说点废话,愿自己生一颗温柔细腻的心,这样女朋友也许一个眼神,一个微笑,我就知道如何做,可惜内心与外表一样粗糙,这一生有幸认识她,愿天下有情人终成眷属。

  循环链表,顾名思义循环就好了,所以建一个线性表之后,在尾指针之后.next=first就好了,照例先建一个结构体(类似于C语言的结构体,java里面是类):

  复制代码

  class Person{

  protected Person next;

  protected int data;

  public Person(int data){

  this.data = data;

  }

  public void display(){

  System.out.println(data);

  }

  }

  /*

  *next是一个为经过引用的Person类,并未在堆上分配出内存(这里我不确定,代码猜测)

  */

  复制代码

  接着我们来写操作这个Person对象内存空间的链表类,类似于写一个链表的工具类:

  首先一定是先建立一个头指针,指向第一个节点:

  protected Person first;

  这个first类未经引用,当用对象引用这个first时,一定要注意对象的一致,底下加一个构造方法:

  public link(){

  this.first = null;

  }

  头结点创立好了,在对象引用这个工具类时,头结点就被定义了,所以下面写一个方法,用来创立循环链表:

  public void fun(){

  Scanner s = new Scanner(System.in);

  System.out.print("请输入链表长度,输入为纯数字:");

  int value = Integer.parseInt(s.nextLine());

  Person p = null;

  first = new Person(n--); //一定要是头结点第一个被建立,因为开始定义的就是first

  p = first;

  while(n-->0){

  p.next = new Person(n+1);

  p = p.next;

  }

  p.next = first;

  复制代码

  这个类的名字叫link,看构造方法,这个链表的工具类就完成了。

  下面写一段代码引用一下,代码很简单:

  public class Huan {

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  link l = new link();

  l.fun();

  Person p = l.first;

  while(p!=null){

  p.display();

  p = p.next;

  }

  }

  }