void dLinkedListAppend(struct Node* head, int value) { if(head->next == NULL) head->next = newLink(value, head, NULL); else dLinkedListAppend(head->next, value); }
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; }
//---------------------------------------------------------------------------- // 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; }
void CentralWidget::callClient(std::string const &login) { // AudioThreadSingleton::getInstance()->addLogin("lol"); emit newLink(QString(login.c_str())); }
//---------------------------------------------------------------------------- // 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; } }