C++双向循环列表用法实例

2020-01-06 13:22:23于丽

易采站长站为您分析C++双向循环列表,实例分析了C++双向循环列表的创建、输出、添加、删除、移动的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C++双向循环列表用法。。具体如下:

 

 
  1. /*   双向循环链表  
  2. */  #include <iostream> 
  3. using namespace std;  //结构体构造链表的指针域和数据域 
  4. struct ChainNode  { 
  5. int data; //节点数据   ChainNode *left; //节点的前驱指针 
  6. ChainNode *right; //节点的后继指针   }; 
  7. ////////////创建n个双向循环链表 并返回链表头指针/////////   ChainNode* CreateNode(int n) 
  8. {  ChainNode *head = NULL; //链表头节点 
  9. ChainNode *pCur=NULL,*pNew=NULL; //当前节点,新建节点  //初始化头结点的前驱和后继节点都为NULL  
  10. if (n<1) //没有节点 返回头节点   { 
  11. return head;   }  
  12. //创建头节点并将器左右指针指向空   head = new ChainNode;  
  13. head->left = NULL;  head->right = NULL;  
  14. head->data = 0;  pCur = head; 
  15. //为防止指针互指带来的混乱,用pCur节点保存了头节点 也表示当前指针移动到了头指针   //创建n个节点 并连接成链表  
  16. for (int i=0; i<n; i++)  { 
  17. pNew = new ChainNode; //创建一个新节点  cout<<"请输入数据:"; 
  18. cin>>pNew->data;  pCur->right = pNew; //头指针的右指针指向新建节点  
  19. pNew->left = pCur; //新建节点的左指针执行头节点   pNew->right = NULL; //用于最后和头指针进行交换  
  20. pCur = pNew; //指针往下移动   }  
  21. //最后将头指针的左指针指向最后一个节点,  //最后一个节点的有指针指向头指针,构成循环  
  22. head->left = pCur;   pCur->right = head;