需要帮助编码迭代器的循环链表在c++



所以我创建了一个循环链表来解决Josephus问题。我的c++课上有一个非常糟糕的教授,我真的不知道如何用c++做任何事情。我试图编写一个迭代器来横向列表,但我不知道从哪里开始或如何实现它。谁能给我一个建议或建议,如何开始编码这个?

这与std::list迭代器非常相似,除了end迭代器的下一个指针是列表的头,而不是NULL。参考页面会告诉你应该实现什么。底层表示将是指向列表节点的指针,operator*将返回对数据的引用,operator++将将指针设置为next,等等。

或者,使用带有模运算的数组实现。

约瑟夫问题是如果N个人决定通过安排选举一个领导人他们自己围成一个圈,然后消灭圈内的每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

相关内容

  • 没有找到相关文章

最新更新