< 2*CircleList_Length(list);i++){struct Value* pv = (struct Value*) CircleList_Get(list,i)printf("%d\n",pv->v);}printf("\n");while( CircleList_Length(list) > 0)// 循环链表还有元素从头开始删{struct Value* pv = (struct Value*) CircleList_Delete(list,0);printf("%d\n",pv->v);}printf("\n");CircleList_Insert(list,( CircleListNode*)&V1, CircleList_Length(list));CircleList_Insert(list,( CircleListNode*)&V2, CircleList_Length(list)); CircleList_Insert(list,( CircleListNode*)&V3, CircleList_Length(list)); CircleList_Insert(list,( CircleListNode*)&V4, CircleList_Length(list)); CircleList_Insert(list,( CircleListNode*)&V5, CircleList_Length(list));CircleList_Insert(list,( CircleListNode*)&V6, CircleList_Length(list)); CircleList_Insert(list,( CircleListNode*)&V7, CircleList_Length(list)); CircleList_Insert(list,( CircleListNode*)&V8, CircleList_Length(list)); for(i=0;i < CircleList_Length(list);i++)// 查看八个人是否在循环链表中{struct Value* pv = (struct Value*) CircleList_Next(list)// 先将当前的返回再移动printf("%d\n",pv->v);}printf("\n");CircleList_Resert(list); // 重置游标// 解决约瑟夫问题while( CircleList_Length(list) > 0)// 当链表中没有元素的时候停止出列{struct Value* pv = NULL;for(i = 1;i < 3;i++){CircleList_Next (list);// 这里的移动用游标来移动,所以很高效}pv = (struct Value*) CircleList_Current(list);printf("%d\n",pv->v);CircleList_DeleteNode(list,(CircleListNode*) pv );}CircleList_Destory(list); return 0;}
小结;
循环链表只是在单链表的基础上做了一个加强
循环链表完全可以代替单链表
【数据结构系列--循环链表】循环链表的Next和操作可以高效的遍历链表中的每个元素
- 数据结构系列--栈与递归
- 数据结构系列--栈的实践
- 数据结构 C++实现 基于不同策略的英文单词的词频统计和检索系统
- JS中各种循环遍历方式:for-in,for-of,forEach
- 很有用的AngularJS 介绍
- 低碳循环饮食法,碳水循环饮食法怎么吃
- 莫高窟暂停开放
- 变形金刚4什么时候上映
- 7 我教女朋友学编程html系列—Html无序列表、自定义列表、有序列表及常用
- 代码展示 C#系列---①三层架构中各层次之间的调用