C++用循环列表解决—约瑟夫问题

循环链表的定义:将单链表中的最后一个元素的next指针指向第一个元素

新增功能:游标的定义。

在循环列表中可以定义一个当前指针,这个指针通常称为游标,可以通过这个游标来遍历列表中的所有元素

循环列表新操作

将游标重置指向链表中的第一个数据元素

获取当前游标指向的数据元素

将游标移动指向到链表中的下一个数据元素

直接指定删除列表中的某个数据元素

优点:功能强了,循环链表,只是在单链表的基础上做了一个加强

循环链表可以完全取代单链表的使用

循环链表的next 和current操作可以高效地遍历列表中的所有元素。

缺点:代码复杂度提高了

约瑟夫问题:N个人围成一个圆圈,首先第一个人从一开始一个人,一个人顺时针报数,报到第m个人,令其出列 .然后再从下一个人开始从1顺时针报数,报到第m个人,令其出列 如此下去,求出列顺序.

示例代码(头文件略)

#include
#include
#include"Circlelist.h"
struct Value
{
	CircleListNode header;
	int v;

};
void main()
{
	int i = 0;
	CircleList*list = CircleList_Create();

	struct Value v1;
	struct Value v2;
	struct Value v3;
	struct Value v4;
	struct Value v5;
	struct Value v6;
	struct Value v7;
	struct Value v8;
	CircleList*lis_Insert(list, (CircleListNode)&v1, CircleList_Length(list));
	CircleList*lis_Insert(list, (CircleListNode)&v2, CircleList_Length(list));
	CircleList*lis_Insert(list, (CircleListNode)&v3, CircleList_Length(list));
	CircleList*lis_Insert(list, (CircleListNode)&v4, CircleList_Length(list));
	CircleList*lis_Insert(list, (CircleListNode)&v5, CircleList_Length(list));
	CircleList*lis_Insert(list, (CircleListNode)&v6, CircleList_Length(list));
	CircleList*lis_Insert(list, (CircleListNode)&v7, CircleList_Length(list));
	CircleList*lis_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
", pv->v);
	}
	printf("
");
	//重置游标
	while (CircleList_Length(list) > 0)
	{
		struct  Value*pv = NULL;
		for (i = 0; i < 3; i++)
		{
			CircleList_Next(list);
		}
		pv = (struct  Value*)CircleList_Current(list);
		printf("%d
", pv->v);
		CircleList_DeleteNode(list, (CircleListNode*)pv);
	}
	CircleList_Destroy(list);
	system("pause");
	return;
}

[灵光一闪]

展开阅读全文

页面更新:2024-05-16

标签:约瑟夫   复杂度   游标   遍历   高效   圆圈   灵光   示例   指针   顺序   元素   定义   操作   代码   数据   列表   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top