|
1、线性表(列如:链表、数组)
链表的分为单向链表与双向链表(LinkList)数组(ArrayList)
package com.data.structure.list;
import java.util.List;
/**
* 单向链表
* @Author: wushuai
* @Date: 2019/8/15 13:47
* @Description:
*/
public class LinkList {
/**
* 插入头部
* @param p
* @param head
*/
public static void insertHead(Node p, Node head){
if(p==null){
return;
}
p.setNext(head);
head = p;
}
/**
* 插入尾部
* @param p
* @param nodes
*/
public static void insertTail(Node p, Node head){
if(null==head){
return;
}
Node temp = head.getNext();
while (temp.getNext() !=null){
temp = temp.getNext();
}
temp.setNext(p);
}
/**
* 插入中间
* @param newNode
* @param pre
* @param next
*/
public static void insertMiddle(Node newNode, Node pre,Node next){
Node temp = next;
pre.setNext(newNode);
newNode.setNext(temp);
}
/**
* 循环遍历所有节点data
* @param current
*/
public static void map(Node current){
//遍历单向链表
// if(null==head){
// return;
// }
// System.out.print(head.getValue() + " ");
// if (head.getNext() !=null){
// //递归
// LinkList.map(head.getNext());
// }
//第二种方法:迭代输出,直到next为null时!
// while (current !=null){
// System.out.print(current.getValue() + " ");
// current = current.getNext();
// }
do{
Node next = current.getNext();
System.out.print(current.getValue() + " ");
current = next;
}while (current !=null);
}
public static void main(String[] args) {
Node head = new Node("1");
Node node2 = new Node("2");
Node node3 = new Node("3");
Node node4 = new Node("4");
head.setNext(node2);
node2.setNext(node3);
node3.setNext(null);
// LinkList.map(node1);
// LinkList.map(node1);
Node newNode = new Node("0");
//插入头部
insertHead(newNode,head);
map(newNode);
//插入中间
// LinkList.insertMiddle(newNode,node2,node3);
// LinkList.map(head);
}
} |