public void displayList() {
   LinkNode currentLink = firstNode;
   while (currentLink.getNext() != null) {
     currentLink.printList();
     currentLink = currentLink.getNext();
   }
 }
  public static void main(String args[]) {
    LinkNode linkNode = new LinkNode(10);

    linkNode.next = new LinkNode(20);
    linkNode.next.next = new LinkNode(30);
    linkNode.next.next.next = new LinkNode(40);

    LinkNode reversedLinkedList = stackImplementation(linkNode);
    System.out.println("Done");
  }
 public LinkNode find(int id) {
   LinkNode node = firstNode;
   // 循环递归查找
   while (node.getId() != id) {
     if (node.getNext() != null) {
       node = node.getNext();
     } else {
       return null;
     }
   }
   return node;
 }
 public static void main(String[] args) {
   SingleLinkList link = new SingleLinkList();
   link.insert(2);
   link.insert(1);
   link.insert(10);
   link.displayList();
   System.out.println("=====");
   link.removeFirst();
   link.displayList();
   System.out.println("-------");
   LinkNode find = link.find(10);
   find.printList();
 }
  /**
   * Lays out all children in a hierarchical decomposition graph. Nodes are arranged using
   * layoutNode() and edges are updated afterwards. This also updates it's own bounds according to
   * the placement of the children.
   */
  @Override
  protected void layoutChildren() {
    // layout all top nodes (not LinkNodes)
    double firstX[] = new double[project.getCategorySize() + 2];
    for (int i = 0; i < getChildrenCount(); i++) {
      PNode node = getChild(i);
      if (!(node instanceof LinkNode)) {
        layoutNode(node, 0, firstX);
      }
    }

    // Update all LinkNodes
    for (int i = 0; i < getChildrenCount(); i++) {
      PNode node = getChild(i);
      if (node instanceof LinkNode) {
        ((LinkNode) node).updateLine();
      }
    }

    // Update bounds
    double maxX = 0;
    for (int i = 0; i < firstX.length; i++) {
      if (firstX[i] > maxX) {
        maxX = firstX[i];
      } else if (firstX[i] == 0) {
        double height = i * (CategoryNode.HEIGHT + CategoryNode.PADDING_HEIGHT);
        setBounds(0, 0, maxX, height);
        break;
      }
    }
  }
 public Integer pop() {
   if (top.next == null) {
     return null;
   }
   int val = top.next.data;
   top.next = top.next.next;
   return val;
 }
  public static LinkNode stackImplementation(LinkNode linkedList) {
    Stack<LinkNode> stack = new Stack<>();
    LinkNode tempNode = linkedList;
    while (tempNode != null) {
      stack.push(tempNode);
      tempNode = tempNode.next;
    }
    tempNode = stack.pop();
    linkedList = tempNode;
    while (!stack.empty()) {

      tempNode.next = stack.pop();
      tempNode = tempNode.next;
    }
    tempNode.next = null;

    return linkedList;
  }
  public LinkNode remove(int id) {
    LinkNode needDelete = firstNode;
    LinkNode previNode = firstNode;
    while (needDelete.getId() != id) {
      if (needDelete.getNext() == null) {
        return null;
      } else {

        previNode = needDelete;
        needDelete = needDelete.getNext();
      }
    }

    if (needDelete.equals(firstNode)) {
      firstNode = firstNode.getNext();
    } else {
      previNode.setNext(needDelete.getNext());
    }

    return needDelete;
  }
 public void push(Integer data) {
   LinkNode node = new LinkNode(data);
   node.next = top.next;
   top.next = node;
 }
Exemple #10
0
 Stack() {
   top = new LinkNode(-1);
   top.next = null;
 }
 public void insert(int id) {
   LinkNode newLink = new LinkNode(id);
   newLink.setNext(firstNode);
   firstNode = newLink;
 }
 public LinkNode removeFirst() {
   LinkNode currentLink = firstNode.getNext();
   firstNode = currentLink;
   return currentLink;
 }