Java實現資料結構--棧
阿新 • • 發佈:2019-02-07
package lianbiao; //儲存連結串列資訊 class Node { Node next = null; int data; public Node(int data) { this.data = data; } } public class LinkedListTest { Node head = null;// 連結串列頭的引用 /* 插入節點 */ private void addNode(int d) { Node newNode = new Node(d); if (head == null) { head = newNode;// 如果頭為空,直接當做頭結點 return; } Node temp = head; while (temp.next != null) { temp = temp.next;// 從頭結點開始找,直到末尾 } temp.next = newNode;// 插入末尾 } // 刪除節點 public boolean deleteNode(int d) {// 刪除第d個節點 if (d < 1 || d > length()) {// 判斷要刪除的節點是否合理 return false; } if (d == 1) { head = head.next;// 如果刪除頭結點 return true; } int i = 1; Node preNode = head;// 前一個節點 Node curNode = preNode.next;// 當前節點 while (curNode != null) { if (i == d) { preNode.next = curNode.next;// 如果是這個節點 return true; } preNode = curNode;// 向後移 curNode = curNode.next; i++; } return true; } // 返回長度 private int length() { int length = 0; Node temp = head; while (temp != null) { length++; temp = temp.next; } return 0; } // 對連結串列進行插入排序 private Node orderList() { Node nextNode = null; int temp = 0; Node curNode = head; while (curNode.next != null) { nextNode = curNode.next; while (nextNode != null) { if (curNode.data > nextNode.data) {// 當前節點>下一節點,交換 temp = curNode.data; curNode.data = nextNode.data; nextNode.data = temp; } nextNode = nextNode.next; } curNode = curNode.next; } return head; } // 輸出 private void printList() { Node temp = head; while (temp != null) { System.out.println(temp.data); temp = temp.next; } } public static void main(String[] args) { // TODO 自動生成的方法存根 } }