双循环链表就地逆置C++算法,急急急

C++算法:双循环链表就地逆置,用prior,next,data等实现,在线等急急急... C++算法:双循环链表就地逆置,用prior,next,data等实现,在线等急急急 展开
 我来答
蜡笔小新NO1
推荐于2017-09-06 · 超过83用户采纳过TA的回答
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:130万
展开全部

  // test2.cpp : 定义控制台应用程序的入口点。

  //


  #include "stdafx.h"

  #include <stdlib.h>

  #include <stdio.h>

  #include <iostream>

  #include <string>

  using namespace std;

  struct Node{

  int data;

  Node *pre;

  Node *next;

  Node(int d) :data(d),pre(NULL), next(NULL){

  }

  };

  class NodeList{

  private:

  Node * head;

  Node * tail;

  public:


  NodeList():head(NULL), tail(NULL){

  }

  virtual ~NodeList(){


  Node * p = head;

  while( p != NULL){

  Node * temp = p->next;

  delete p;

  p = temp;

  }

  head = tail = NULL;


  }

  void add(Node const & node){

  if(head == NULL){

  head = new Node(node);

  tail = head;

  }else{

  Node *p = new  Node(node);

  p->pre = tail;

  p->next = NULL;

  tail->next = p;

  tail = p;

  }

  }

  void display(){

  Node * p = head;

  while( p != NULL){

  cout << p->data << endl;

  p = p->next;

  }

  }


  Node * revert(){

  Node * p = head;

  while( p != NULL){

  Node * next = p->next;

  Node * pre = p->pre;

  p->pre = next;

  p->next = pre;

  p = next;

  }

  Node* temp = tail;

  tail = head;

  head = temp;

  return head;

  }

  };


  int _tmain(int argc, _TCHAR* argv[])

  {


  NodeList list;

  for( int i = 0; i < 10; ++i){

  Node node(i);

  //node.data = i;

  list.add(node);

  }

  list.display();

  list.revert();

  list.display();

  system("pause");

  return 0;

  }

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式