需要帮助为 C++ 中的循环链表编写迭代器
Need help coding iterator for a circular linked list in C++
所以我正在创建一个循环链表来解决作业的 Josephus 问题。我的 C++ class 有一个非常糟糕的教授,我真的不知道如何用 C++ 做任何事情。我正在尝试编写一个迭代器来遍历列表,但我不知道从哪里开始或如何实现它。谁能给我关于如何开始编码的建议或建议?
它几乎就像 std::list
迭代器,除了结束迭代器是下一个指针是列表头部的地方,而不是当它是 NULL
时。参考页面会告诉您应该实现什么。底层表示将是指向列表节点的指针,operator*
将 return 对数据的引用,operator++
将指针设置为 next
,等等
或者,使用具有模块化算法的数组实现。
Josephus问题是如果N个人已经决定通过安排选出一个leader
他们自己围成一个圈,并淘汰圈内的第 M 个人,当每个人退出时关闭排名。找出最后剩下的人。
这是这个问题在 C++ 中的一个非常简单的实现。
#include<iostream>
#include<stdio.h>
#include<cstdlib>
#include<stdlib.h>
using namespace std;
struct node
{ int info;
struct node *next;
}arr[]={{rand(),arr+1},{rand(),arr+2},{rand(),arr+3},{rand(),arr+4},{30,arr}};
typedef struct node* Node;
void josephus(Node);
int main()
{
josephus(arr);
system("pause");
}
void josephus(Node head)
{
Node ptr,temp;
int length=1,position,i;
ptr=head;
while(ptr->next!=head)
{
ptr=ptr->next;
length++;
}
ptr=head;
printf(" Enter the position at which element should get eliminated ");
scanf("%d",&position);
while(length>1)
{
i=1;
while(i<position)
{
ptr=ptr->next;
i++;
}
temp=ptr;
ptr=ptr->next;
free(temp);
length--;
}
printf("\n Last Element Left is %d Its address is %u \n",ptr->info,ptr);
}
更多详情请访问-
https://github.com/SahdevKansal02/Data-Structures-And-Algorithms.git
所以我正在创建一个循环链表来解决作业的 Josephus 问题。我的 C++ class 有一个非常糟糕的教授,我真的不知道如何用 C++ 做任何事情。我正在尝试编写一个迭代器来遍历列表,但我不知道从哪里开始或如何实现它。谁能给我关于如何开始编码的建议或建议?
它几乎就像 std::list
迭代器,除了结束迭代器是下一个指针是列表头部的地方,而不是当它是 NULL
时。参考页面会告诉您应该实现什么。底层表示将是指向列表节点的指针,operator*
将 return 对数据的引用,operator++
将指针设置为 next
,等等
或者,使用具有模块化算法的数组实现。
Josephus问题是如果N个人已经决定通过安排选出一个leader 他们自己围成一个圈,并淘汰圈内的第 M 个人,当每个人退出时关闭排名。找出最后剩下的人。 这是这个问题在 C++ 中的一个非常简单的实现。
#include<iostream>
#include<stdio.h>
#include<cstdlib>
#include<stdlib.h>
using namespace std;
struct node
{ int info;
struct node *next;
}arr[]={{rand(),arr+1},{rand(),arr+2},{rand(),arr+3},{rand(),arr+4},{30,arr}};
typedef struct node* Node;
void josephus(Node);
int main()
{
josephus(arr);
system("pause");
}
void josephus(Node head)
{
Node ptr,temp;
int length=1,position,i;
ptr=head;
while(ptr->next!=head)
{
ptr=ptr->next;
length++;
}
ptr=head;
printf(" Enter the position at which element should get eliminated ");
scanf("%d",&position);
while(length>1)
{
i=1;
while(i<position)
{
ptr=ptr->next;
i++;
}
temp=ptr;
ptr=ptr->next;
free(temp);
length--;
}
printf("\n Last Element Left is %d Its address is %u \n",ptr->info,ptr);
}
更多详情请访问- https://github.com/SahdevKansal02/Data-Structures-And-Algorithms.git