コード例 #1
0
void dLinkedListAppend(struct Node* head, int value)
{
    if(head->next == NULL)
        head->next = newLink(value, head, NULL);
    else
        dLinkedListAppend(head->next, value);
}
コード例 #2
0
struct Node* arrToDLinkedList(int* arr, int len)
{
    struct Node* head = newLink(arr[0], NULL, NULL);
    // Can't be Schlemiel
    struct Node* walker = head;
    for(int i = 1; i < len; i++)
    {
        dLinkedListAppend(walker, arr[i]);
        walker = head->next;
    }
    return head;
}
コード例 #3
0
//----------------------------------------------------------------------------
//        int HypGraph::addLink(HypNode *fromnode, HypNode *tonode)        
//............................................................................
//  
//----------------------------------------------------------------------------
int HypGraph::addLink(HypNode *fromnode, HypNode *tonode)
{
  HypLink *link;
  string linkid = fromnode->getId() + "|" + tonode->getId(); 
  if ((link = getLinkFromId(linkid)) == NULL) {
    link = new HypLink(fromnode->getId(), tonode->getId());
    newLink(link, linkid);
    link->setColorFrom(hd->colorLinkFrom[0], hd->colorLinkFrom[1], 
		       hd->colorLinkFrom[2], hd->colorLinkFrom[3]);
    link->setColorTo(hd->colorLinkTo[0], hd->colorLinkTo[1], 
		     hd->colorLinkTo[2], hd->colorLinkTo[3]);
    link->setParent(fromnode);
    link->setChild(tonode);
    link->setDesired(1);
    link->setEnabled(1);
    fromnode->addOutgoing(link);
    tonode->addIncoming(link);
    link->layout();
  }
  link->setEnabled(1);
  link->setDesired(1);
  return 1;
}
コード例 #4
0
ファイル: CentralWidget.cpp プロジェクト: alex-min/babelroxor
void    CentralWidget::callClient(std::string const &login)
{
    // AudioThreadSingleton::getInstance()->addLogin("lol");
    emit newLink(QString(login.c_str()));
}
コード例 #5
0
//----------------------------------------------------------------------------
//        HypNode *HypGraph::doAddNode(HypNode *current, string id,        
//                                     int level, int pri)                 
//............................................................................
//  
//----------------------------------------------------------------------------
HypNode *HypGraph::doAddNode(HypNode *current, string id,
                             int level, int pri)
{
  string linkid;
  int swap = 0;
  int exists = findUrl(id);
  if (current && exists >= 0) {
    // possibly choose new main parent
    HypNode *oldnode = nodes[exists];
    if (!maybeAddChild(current, id))
      return (HypNode *)0;
    HypNode *oldpar = oldnode->getParent();
    swap = maybeSwap(current, oldpar, id, pri);
    if (1 == swap) {
      /* switch: found better main parent */

      linkid = current->getId() + "|" + id; // parent|child
      HypLink *oldlink = oldnode->getParentLink();
      //      fprintf(stderr, "swap in %s, swap out %s\n", (char*)linkid.c_str(), (char*)oldlink->getId().c_str());
      oldpar->addOutgoing(oldlink);
      oldpar->deleteChildLink(oldlink);
      oldpar->deleteChild(oldnode);
      HypLink *newlink = new HypLink(current->getId(), id);
      newLink(newlink, linkid);
      newlink->setParent(current);
      newlink->setChild(oldnode);
      newlink->setEnabled(1);
      newlink->setDesired(1);
      oldlink->setEnabled(0);
      oldlink->setDesired(0);
      newlink->setColorFrom(hd->colorLinkFrom[0], hd->colorLinkFrom[1], 
			    hd->colorLinkFrom[2], hd->colorLinkFrom[3]);
      newlink->setColorTo(hd->colorLinkTo[0], hd->colorLinkTo[1], 
			  hd->colorLinkTo[2], hd->colorLinkTo[3]);
      current->addChildLink(newlink);
      current->addChild(oldnode);
      oldnode->addParentLink(newlink);
      oldnode->addParent(current);
      oldnode->setLevel(current->getLevel()+1);
      oldnode->addIncoming(oldlink);
    } else {
      // outgoing nontree link
      if (!maybeAddOutgoing(current, id))
        return (HypNode *)0;
      /* mainparent and child nodes might not exist yet, add later */
      linkid = current->getId() + "|" + id; // parent|child
      HypLink *newlink = new HypLink(current->getId(), id);
      newLink(newlink, linkid);
      newlink->setParent(current);
      newlink->setChild(oldnode);
      newlink->setEnabled(0);
      newlink->setColorFrom(hd->colorLinkFrom[0], hd->colorLinkFrom[1], 
			    hd->colorLinkFrom[2], hd->colorLinkFrom[3]);
      newlink->setColorTo(hd->colorLinkTo[0], hd->colorLinkTo[1], 
			  hd->colorLinkTo[2], hd->colorLinkTo[3]);
      //	newlink->setEnabled(1);
      current->addOutgoing(newlink);
      oldnode->addIncoming(newlink);
    }

    return (HypNode *)0;

  } else {
    // child node
    //      int thelev = current ? current->getLevel()+1 : level;
    //      HypNode *newnode = new HypNode(hd, current, thelev);
    HypNode *newnode = new HypNode(hd, current, level);
    newNode(newnode, id);
    newnode->setEnabled(1);
    if (current) {
      linkid = current->getId() + "|" + id; // parent|child
      HypLink *newlink = new HypLink(current->getId(), id);
      newLink(newlink, linkid);
      newlink->setParent(current);
      newlink->setChild(newnode);
      newlink->setEnabled(1);
      newlink->setDesired(1);
      newlink->setColorFrom(hd->colorLinkFrom[0], hd->colorLinkFrom[1], 
			    hd->colorLinkFrom[2], hd->colorLinkFrom[3]);
      newlink->setColorTo(hd->colorLinkTo[0], hd->colorLinkTo[1], 
			  hd->colorLinkTo[2], hd->colorLinkTo[3]);
      current->addChildLink(newlink);
      current->addChild(newnode);
      newnode->addParentLink(newlink);
      newnode->addParent(current);
    }

    return newnode;

  }
}