当前位置: 首页>>代码示例>>C++>>正文


C++ ListNode::next方法代码示例

本文整理汇总了C++中ListNode::next方法的典型用法代码示例。如果您正苦于以下问题:C++ ListNode::next方法的具体用法?C++ ListNode::next怎么用?C++ ListNode::next使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ListNode的用法示例。


在下文中一共展示了ListNode::next方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: findNSmallest2

void findNSmallest2(T first, T last, size_t n, V oit) {
  std::auto_ptr<ListNode> head;
  std::vector<double> buffer(n, std::numeric_limits<double>::max());
  for (; first != last; ++first) {
    double tmp = *first;
    if (head.get() == NULL) {
      head.reset(new ListNode(tmp));
    }
    else {
      // Insertion into correct place
      ListNode* currNode = head.get();
      ListNode* prevNode = NULL;
      for (;;) {
        if (tmp < currNode->value()) {
          // Insert
          if (prevNode == NULL) {
            // Inserts at start
            head.release();
            head.reset(new ListNode(tmp, currNode));
          }
          else {
            // Insert part way through
            ListNode* newnode = new ListNode(tmp, currNode);
            prevNode->join(newnode);
          }
          break;
        }
        if (currNode->next() == NULL) {
          // Reached end of list
          ListNode* newnode = new ListNode(tmp);
          currNode->join(newnode);
          break;
        } else {
          prevNode = currNode;
          currNode = currNode->next();
        }
      }
    }
    // Trim list to size
    ListNode* currNode = head.get();
    for (size_t i = 0; currNode != NULL && i < n; ++i) {
      if (i == n - 1) {
        ListNode* tmp = currNode->next();
        currNode->join(NULL);
        delete tmp;
      }
      currNode = currNode->next();
    }
  }
  for (ListNode* currNode = head.get(); currNode != NULL;
      currNode = currNode->next()) {
    *oit = currNode->value();
  }
}
开发者ID:ethr,项目名称:stlplayground,代码行数:54,代码来源:SmallestN.cpp

示例2: put

void PointerFIFO::put(void* val)
{
	ListNode *node = allocate();
	node->data(val);
	node->next(NULL);
	if (mTail!=NULL) mTail->next(node);
	mTail=node;
	if (mHead==NULL) mHead=node;
	mSize++;
}
开发者ID:0x7678,项目名称:OpenBTS,代码行数:10,代码来源:LinkedLists.cpp

示例3: push_front

void PointerFIFO::push_front(void* val)	// by pat
{
	// Pat added this routine for completeness, but never used or tested.
	// The first person to use this routine should remove this assert.
	ListNode *node = allocate();
	node->data(val);
	node->next(mHead);
	mHead = node;
	if (!mTail) mTail=node;
	mSize++;
}
开发者ID:0x7678,项目名称:OpenBTS,代码行数:11,代码来源:LinkedLists.cpp

示例4: locate

  /* Return the +index+ numbered element from the beginning. */
  Object* List::locate(STATE, size_t index) {
    ListNode* cur = first_;

    while(index > 0) {
      if(cur->nil_p()) return Qnil;

      cur = cur->next();
      index--;
    }

    if(cur->nil_p()) return Qnil;
    return cur->object();
  }
开发者ID:AndrewVos,项目名称:rubinius,代码行数:14,代码来源:list.cpp

示例5: remove

  /* Search the List for +obj+ and remove all instances of it.
   *
   * Returns the number of elements removed. */
  size_t List::remove(STATE, const Object* obj) {
    if(empty_p()) return 0;

    size_t deleted = 0, counted = 0;

    ListNode* node = first_;
    ListNode* lst =  nil<ListNode>();
    ListNode* nxt =  nil<ListNode>();

    while(!node->nil_p()) {
      nxt = node->next();

      if(node->object() == obj) {
        deleted++;
        if(lst->nil_p()) {
          first(state, nxt);
        } else {
          lst->next(state, nxt);
        }

        if(last_ == node) {
          last(state, lst);
        }

        lst = nil<ListNode>();
      } else {
        counted++;
        lst = node;
      }

      node = nxt;
    }

    count(state, Integer::from(state, counted));

    return deleted;
  }
开发者ID:AndrewVos,项目名称:rubinius,代码行数:40,代码来源:list.cpp


注:本文中的ListNode::next方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。