1。尾插法
工作原理:
创建一个类MyLinked设置一个存储链表数据的属性int data,在设置存储链表内下一个数据节点的属性MyLinked next.
定义一个创建链表的方法,定义head永远保存第一个节点地址,storage永远保存最后一个地址,last保存每次循环产生的临时节点地址,创建数据给data,创建新地址给storage。next做拼接storage接受当前地址作为最后一个地址存储。
代码实现:
import java.util.Random; public class MyLinked { int data; //创建一个数组的属性 MyLinked next; //创建一个储存下一个节点的属性 public MyLinked ceate(int len) { Random r = new Random();//随机对象 MyLinked head,storage,last; //定义三个对象,head 为 永远存储第一个节点的地址 //storage 为 永远存储最后一个节点的地址 //last 为 新的临时节点 head = storage = last = null; for (int i = 0; i <len ; i++) { int temp = r.nextInt(50); last = new MyLinked();//创建一个新的临时节点 last.data = temp; //为属性赋值 if (head ==null){ //判断链表是否是第一次赋值 head = storage = last; }else { storage.next = last;//将新节点连接到链表的尾部 storage = last; //永远的储存最后一个节点的地址 } } return head; } public static void main(String[] args) { MyLinked my = new MyLinked();//引用 MyLinked ww = my.ceate(10);//将随机的数值赋值给ww for (int i = 0; i <10 ; i++) { System.out.print(ww.data+" ");//打印第一个数的值; ww = ww.next;//将下一个数my.next值赋给xx后,下一轮xx.data就相当于这个数的值; } } }
————————————————————————————————————————————————————————2。头插法
代码实现:
import java.util.Random; //创建链表类 头插法 class MLink{ //当Mlink实例化后形成一个链表的节点对象 //节点对象中的属性 //节点存储的属性 public int data; //存储下一个链表节点地址的属性 public MLink next; /** * 功能:创建一个链表,并返回头节点的地址 * @param len 创建链表数据的长度 * @return 返回头节点的地址 */ public MLink create(int len){ MLink header=null; //创建随机对象 Random ra=new Random(); //生成指定长度的随机数 for (int i = 0; i <len ; i++) { //创建随机数 int num=ra.nextInt(100); //创建一个节点对象 MLink temp=new MLink(); //存储数据 temp.data=num; //是否第一次创建链表节点 if(header==null) header=temp; else{ temp.next=header; header=temp; } } return header; } /** * 遍历整个链表 * @param header 链表中第一个节点的地址 */ public void show(MLink header){ while(header!=null){ System.out.print(header.data+" "); //遍历下一个节点 header=header.next; } } } public class Demo01 { public static void main(String[] args) { //创建链表对象 MLink link=new MLink(); //创建一个链表,并返回第一个节点的地址 MLink header=link.create(8); //遍历创建的链表 link.show(header); } }