陣列轉化為單向連結串列再順序新增
阿新 • • 發佈:2021-02-13
public class SingListNode {
//連結串列類
int val;
SingListNode next;
public SingListNode(int val) {
this.val = val;
}
}
public class SingListNodeInser {
SingListNode root ;
/*
將陣列轉化為連結串列
*/
public SingListNode arrayToListNode (int[] arr){
//生成連結串列的根節點,並將陣列的第一個元素的值賦給連結串列的根節點
SingListNode root = new SingListNode(arr[0]);
SingListNode other = root; //other作為臨時變數
for (int i = 1;i<arr.length;i++){ //從1開始遍歷陣列
SingListNode temp = new SingListNode(arr[i]);//每迴圈一次生成一個新的節點
other.next = temp; //將other的下一個節點指向生成的新節點
other = temp; //other為臨時變數,指向當前節點
// if(i==arr.length-1){
// temp.next = null;
// }
}
this.root = root;
return root;
}
/*
將元素插入連結串列
*/
public void addnode(SingListNode node){
SingListNode temp = root; //臨時變數
if (root.next == null){
root.next = node;
System.out.println("到尾了");
return;
}
while (temp.next!=null&&temp.next.val<node.val){
temp = temp.next; //往下遍歷下一個節點
}
if (temp.next == null){//到連結串列尾
temp.next = node;
node.next = null;
}else {
node.next = temp.next;
temp.next = node;
}
System.out.println("節點"+node.val+"插入成功");
}
/*
遍歷連結串列
*/
public void printListNode(){
SingListNode temp = root;
while (temp!=null){
System.out.print(temp.val+" ");
temp = temp.next;
}
}
}
public class test09 {
public static void main(String[] args) {
int[] arr = {1,3,5,6,7,8};
SingListNodeInser singListNodeInser = new SingListNodeInser();
SingListNode listNode = singListNodeInser.arrayToListNode(arr);
singListNodeInser.addnode(new SingListNode(8));
singListNodeInser.addnode(new SingListNode(2));
singListNodeInser.addnode(new SingListNode(77));
singListNodeInser.printListNode();
}
}
結果: