易采站长站为您分析C++双向循环列表,实例分析了C++双向循环列表的创建、输出、添加、删除、移动的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了C++双向循环列表用法。。具体如下:
- /* 双向循环链表
- */ #include <iostream>
- using namespace std; //结构体构造链表的指针域和数据域
- struct ChainNode {
- int data; //节点数据 ChainNode *left; //节点的前驱指针
- ChainNode *right; //节点的后继指针 };
- ////////////创建n个双向循环链表 并返回链表头指针///////// ChainNode* CreateNode(int n)
- { ChainNode *head = NULL; //链表头节点
- ChainNode *pCur=NULL,*pNew=NULL; //当前节点,新建节点 //初始化头结点的前驱和后继节点都为NULL
- if (n<1) //没有节点 返回头节点 {
- return head; }
- //创建头节点并将器左右指针指向空 head = new ChainNode;
- head->left = NULL; head->right = NULL;
- head->data = 0; pCur = head;
- //为防止指针互指带来的混乱,用pCur节点保存了头节点 也表示当前指针移动到了头指针 //创建n个节点 并连接成链表
- for (int i=0; i<n; i++) {
- pNew = new ChainNode; //创建一个新节点 cout<<"请输入数据:";
- cin>>pNew->data; pCur->right = pNew; //头指针的右指针指向新建节点
- pNew->left = pCur; //新建节点的左指针执行头节点 pNew->right = NULL; //用于最后和头指针进行交换
- pCur = pNew; //指针往下移动 }
- //最后将头指针的左指针指向最后一个节点, //最后一个节点的有指针指向头指针,构成循环
- head->left = pCur; pCur->right = head;










