使用java实现有序的单链表,并且添加一个方法,用于反转链表

单链表点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。

创建单链表

定义当前节点类,在堆内存当中创建节点;

定义数据域以及下一个节点的地址域

链表在main方法中不好维护,因此需要定义一个类来创建链表

package com.qcby;

public class ListNode {
       public int value;
       public ListNode next;
       
       
       public ListNode(int value) {
    	   this.value = value;
       }
}
package com.qcby;

public class demo {
	public static void main(String[] args) {
		LinkList linkList = new LinkList();
			linkList.insert(5);
			linkList.insert(7);
			linkList.insert(8);
			linkList.insert(9);
			linkList.printLink();
			
		
		
	}
}

package com.qcby;

public class LinkList {
	
	ListNode head = null;

	
	//创建链表,链表插入方法
	public void insert(int value) {
		ListNode listNode = new ListNode(value);
		if(head==null) {
			head = listNode;
			return; //注意返回,否则会陷入死循环
		}
		
	
        ListNode tempNode = head;
        while(tempNode.next !=null) {
        	tempNode = tempNode.next;
        }
        tempNode.next = listNode;
}




 //输出
  public void printLink() {
	  ListNode tempNode = head;
	  while(tempNode != null) {
		  System.out.println(tempNode.value);//应先作输出,在执行下一步。
		  tempNode = tempNode.next;
	  }
  } 
}  
 

定义一个游标,让它从前到后进行一下遍历:tempNode = tempNode.next使用java实现有序的单链表,并且添加一个方法,用于反转链表_第1张图片

链表的反转

 //反转
      public void fanzhuan() {
    	  ListNode next = null;
    	  ListNode pre = null;
    	  
    	  while(head!=null) {
    		  next = head.next;
    		  head.next = pre;
    		  pre = head;
    		  head = next;
    	  }
    	  head = pre;
    		  }

你可能感兴趣的:(链表,数据结构)