java实现线性链表
package list; public class LineList { Object[] elem; int current; int size; public LineList() { this(100);//初始化生成一个100个元素的数组 } public LineList(int a) { elem = new Object[a]; size = a; current = 0; } //方法用来判断数组大小是否还够用 public void enhanceSize() { if (current == size) { size+=10; Object[] newElem = new Object[size]; int n=0; for(Object obj:elem){ newElem[n]=obj; n++; } elem = newElem; } } //添加元素 public void add(Object e){ enhanceSize(); elem[current]=e; current++; } // 获取元素 public Object get(int index){ return elem[index]; } }
单链表;
1)节点定义:
package linekedList; public class NodeDemo { int data; NodeDemo next; }
2)单链表;
package linekedList; public class LinkedListDemo { NodeDemo head = new NodeDemo(); NodeDemo currentNode = head; //尾插法添加元素 public void add(int e) { NodeDemo newNode = new NodeDemo(); newNode.data = e; currentNode.next = newNode; currentNode = newNode; } 获得指定序号的元素 public Object get(int index) { int i = 0; NodeDemo nodep = head; while ((nodep.next != null) && i < index) { nodep = nodep.next; i++; } return nodep.data; } //链表的插入 public void insertList(int index, int e) { if (index <= 0) { System.out.println("插入位置不合法!!!"); } else { NodeDemo newNode = new NodeDemo(); newNode.data = e; int i = 0; NodeDemo nodep = head; while ((nodep.next != null) && i < index) { nodep = nodep.next; i++; } newNode.next = nodep.next; nodep.next = newNode; } } //两个有序链表的合并,合并后为一个有序链表 public LinkedListDemo mergeLinkedList(LinkedListDemo lB) { NodeDemo lANode = this.head.next; NodeDemo lBNode = lB.head.next; LinkedListDemo lC = new LinkedListDemo(); NodeDemo currentNode = lC.head; while (lANode != null && lBNode != null) { if (lANode.data <= lBNode.data) { currentNode.next = lANode; currentNode = lANode; lANode = lANode.next; System.out.println("A的"); } else { currentNode.next = lBNode; currentNode = lBNode; lBNode = lBNode.next; System.out.println("B的"); } } if (lANode != null) { currentNode.next = lANode; } else { currentNode.next = lBNode; } return lC; } }