循环双链表的简单实现
2014-07-30 17:38
253 查看
<span style="font-size:18px;"><strong>//代码为自己编写,可能有问题,欢迎大家留言指正!</strong></span>
<span style="font-size:18px;"><strong> </strong></span>
#include <iostream> #include <string> using namespace std; typedef struct dnode { int val; dnode *prior; dnode *next; }dnode; dnode * create(); void traverse(dnode *pHead); bool insert(dnode *pHead,int pos,int val); bool del(dnode *pHead,int pos,int &val); void inverse(dnode *pHead); void main() { dnode *pHead = create(); traverse(pHead); insert(pHead,3,5); traverse(pHead); int val; del(pHead,4,val); cout<<val<<endl; traverse(pHead); inverse(pHead); //traverse(pHead); } //建立循环双链表 dnode *create() { dnode *pHead = new dnode,*pTail; pTail = pHead; pTail->next = pHead; //pHead->prior = pTail; for (int i =0;i<4;i++) { dnode *pNew = new dnode; pNew->val = i+1; pNew->next = pTail->next; pTail->next = pNew; pNew->prior = pTail; pTail = pNew; } pHead->prior = pTail; return pHead; } void traverse(dnode *pHead) { dnode *p =pHead->next; while (p != pHead) { cout<<p->val<<" "; p = p->next; } cout<<endl; } bool insert(dnode *pHead,int pos,int val) { dnode *p = pHead,*q; int i = 1; while (p->next != pHead && i < pos) //找到pos-1个节点(不包括头结点) { ++i; p = p->next; } if (i > pos || p->next == pHead) { return false; } dnode *pNew = new dnode; q = p->next; pNew->val = val; p->next = pNew; pNew->prior = p; pNew->next = q; q->prior = pNew; return true; } bool del(dnode *pHead,int pos,int &val) { dnode *p = pHead,*q; int i = 1; while (p->next != pHead && i < pos) //找到pos-1个节点(不包括头结点) { ++i; p = p->next; } if (i > pos || p->next == pHead) { return false; } q = p->next; //q为要删除的节点 val = q->val; p->next = q->next; q->next->prior = p; delete q; return true; } //逆序输出 void inverse(dnode *pHead) { dnode *p = pHead->prior; //p指向最后一个节点 while (p != pHead) { cout<<p->val<<" "; p = p->prior; } cout<<endl; }
相关文章推荐
- 循环双链表的简单实现
- C++中简单实现foreach循环
- 一个简单的双向循环链表的实现
- 用最简单的函数实现功能:判断一个int数据是否是2的x次幂(不能使用循环)。
- 双链表实现简单的学生管理系统
- 循环双链表加目录IO实现简单的文件检索
- 初学者看过来:简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系。
- !实现循环双链表各种基本运算的算法
- 简单数据结构的实现之循环队列
- 简单循环队列模版(数组实现)
- Java循环列表的简单实现
- JSTL 标签循环列表补齐最简单实现,还有最简单的我无语!
- 数据结构实现循环双链表
- 简单实现双向循环链表
- 简单队列和循环队列的实现--数组实现
- 初学者看过来:简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系。
- java实现循环左移和右移的简单算法
- 简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系。
- C实现循环双链表
- C#实现简单switch循环