链表 小结
public void add(int index, Object object) { // 创建对应元素的结点LinkNode temp = new LinkNode(object);// 判断是否索引越界if (index > getSize() || index < 0) {// 抛出运行时错误throw new RuntimeException("索引越界" + "size:" + getSize()+ "; index:" + index);} else if (head == null) {head = temp;foot = head;} else if (index == getSize()) {// 如果所需添加的对象到链表最后foot.setChildren(temp);temp.setParent(foot);foot = temp;} else if (index == 0) {// 如果所需添加的对象到链表最前temp.setChildren(temp);head.setParent(temp);head = temp;} else {// 获取插入位置的父节点和字节点LinkNode node = get(index);LinkNode fnode = node.getParent();// 重新设定关系temp.setParent(fnode);fnode.setChildren(temp);temp.setChildren(node);node.setParent(temp);}}
public void printLinkList() {// 递归算法// if (root != null) { Object date = root.getObj();// System.out.println(date); LinkNode temp = root.getNext();// printLinkList(temp); }// 循环输出LinkNode node = head;while (node != null) {System.out.println(node.getObj());node = node.getChildren();}}
??
?
?
public int contain(LinkNode node) {int index = 0;LinkNode temp = head;// 获得链表头while (temp != null) {// 判断是否为空if (temp.getObj().equals(node.getObj())) {// 判断是否相等return index;// 返回索引} else {index++;temp = temp.getChildren();}}return -1;// 没找到则返回-1}
?
?