课程设计源代码

这篇博客主要分享了一次课程设计的源代码,详细展示了程序的运行结果。
摘要由CSDN通过智能技术生成

/******************************************************
版权所有(C++)2015,杜佳丽
文件名称:约瑟夫.c
作者:杜佳丽
完成日期:20141225
*******************************************************/
#include<iostream>
#include<cstdlib>
using namespace std;



class Node//双向循环链表的结点类
{
    friend class Doublelist;
    friend void DoubleJoseph();

public:
    Node();
    int data;
    Node *prior;
    Node *next;
private:
};



class Doublelist//双向循环链表类
{
    friend void DoubleJoseph();
public:
    void Creatlist(Doublelist &L);//建立双向循环链表
    int getLength(Doublelist &L);//获得链表长度
    Doublelist();
private:
    Node *Head;
};



Node::Node()//Node类的构造函数,初始化首结点数据
{
    data=0;
    prior=NULL;
    next=NULL;
}



Doublelist::Doublelist()//Doublelist类的构造函数,初始化首结点数据
{
    Head=NULL;
}



void Doublelist::Creatlist(Doublelist &L)//建立双向循环链表
{
    cout<<"请输入双向生死游戏的总人数N:"<<'\t';
    int n;
    cin>>n;
    Node *p,*s;
    for(int i=1;i<=n;i++)
    {
        p=new Node;
        p->data=i;
        p->next= NULL;
        if(i==1)
        {
            L.Head=p;
            p->prior=NULL;
            s=L.Head;
        }
        else
        {
            s->next=p;
            p->prior=s;
            s=s->next;
        }
    }
    s->next=L.Head;
    L.Head->prior=p;
}



int Doublelist::getLength(Doublelist &L)//获取双向链表的长度
{
    Node *p=L.Head;
    int count=0;
    while(p->next!=L.Head)
    {
        count++;
        p=p->next;
    }
    count++;
    return count;
}



void DoubleJoseph()//实现约瑟夫双向生死游戏
{
    Doublelist L;
    L.Creatlist(L);

    cout<<"请输入游戏开始的位置S:"<<'\t';
    int s;
    cin>>s;

 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值