链表

来源:互联网 发布:淘宝店铺模板怎么用 编辑:程序博客网 时间:2024/05/17 09:03

链表是一个数组,这个数组中的每个元素都是一个 类(对象),我们暂时管这个类叫node,node类除了基础信息,比如id、name这些,还需要把node类作为自己的属性,比如是nextnode,或者prenode,这个属性中可以存储相邻的link信息,这样每个元素都是和相邻元素可以互相找到的,就像个链条一样。这个链表解决的经典问题就是约瑟夫问题。


class Node{

int num;

Node nextNode=null;


public Node(int no){

this.num=no;

}

}


环形链表

class cycLink{

需要记录第一个位置的node用于和尾部Node关联,和一个临时node记录相邻关系

Node firstNode=null;

Node tmpNode=null;

int len=0;  记录有链表有几个元素

public void setLen(int len){

this.len=len;

}


初始化环形链表

public void createLink(){

//第一个和最后一个很特别,因为他们要互相关联


for (int i=1; i<len;i++){

if (i==1){

Node nd = new Node(i);

this.firstNode=nd;

this.tmpNode=nd;

}else{

if (i!=len){          第1个和最后一个特殊处理

Node nd = new Node(i);

tmpNode.nextNode=nd;

tmpNode=nd;

}else{

先处理倒数第2个

Node nd =new Node(i);

tmpNode.nextNode=nd;

把最后一个放到临时node中,并指向链表头

tmpNode=nd;

tmpNode.nextNode=this.firstNode

}


}

}

}

}


用来测试打印链表内容

public void show(){

Node temp = this.firstNode;

do {

system.out.println(temp.num);

temp=temp.nextNode;

}while(temp!=this.firstNode);

}


public static void main(string[] args){

cycLink cl= new cycLink();

cl.setLen(9);

cl.createLink();

cl.show();

}

0 0
原创粉丝点击