链表是通过一组任意的存储单元来存储线性表中的数据元素。这组存储单元可以是连续的,也可以是非连续的。链表的中的每一个元素又称为一个节点。该节点包括一个值和一个next指针。
数据结构
class Node{
Object value;
Node next;
public Node(Object value){
this.value=value;
}
}
创建
-
头插法
头插法:在链表的头部插入结点建立单链表,因为是在链表的头部插入节点,所以元素插入的顺序和实际读出数据的顺序刚好相反
public static Node create(){
System.out.println("使用头插法创单链表,请输入节点元素:(#号表示结束)");
@SuppressWarnings("resource")
Scanner input=new Scanner(System.in);
Node head=new Node(0);
head.next=null;
Object value=input.next();
while(!value.equals("#")){
Node node=new Node(value);
node.next=head.next;
head.next=node;
value=input.next();
}
return head;
}
-
尾插法
尾插法:在链表的尾部插入节点简建立单链表,元素插入的顺序和实际读出数据的顺序刚好一致
public static Node createByTail(){
System.out.println("使用尾插法创单链表,请输入节点元素:(#号表示结束)");
@SuppressWarnings("resource")
Scanner input=new Scanner(System.in);
Node head=new Node(0);
head.next=null;
Node tail=head;
Object value=input.next();
while(!value.equals("#")){
Node node=new Node(value);
node.next=tail.next;
tail.next=node;
tail=node;
value=input.next();
}
return head;
}
倒置
链表的倒置可以利用头插法的特性,插入数据的顺序和读出数据的顺序刚好相反,所以我们可以利用头插法进行链表的倒置。
public static void reverse(Node head){
System.out.println("原链表逆置啦");
Node temp;
Node node=head.next;
head.next=null;
while(node!=null){
temp=node;
node=node.next;
temp.next=head.next;
head.next=temp;
}
}
版权声明:本文为ismahui原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。