| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 689 人关注过本帖
标题:数据结构约瑟夫环实验运行怎么没有结果啊??
只看楼主 加入收藏
chengUFO
Rank: 1
等 级:新手上路
帖 子:65
专家分:5
注 册:2009-8-8
结帖率:73.33%
收藏
 问题点数:0 回复次数:2 
数据结构约瑟夫环实验运行怎么没有结果啊??
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define OVERFLOW 0

typedef struct LNode
{
    int data;
    struct LNode *next;
    int tag;
}LNode,*LinkList;


void main()
{
    int i,j;
    int n=7;
    int a[8]={0,3,1,7,2,4,8,4};
    int m=20;
    LinkList L;
    L=(LinkList)malloc(sizeof(LNode));
    printf("OK");

    if(!L)
        exit(OVERFLOW);
    LinkList p=L;//不含头结点
    LinkList s;
    LinkList q;
    L->data=a[1];
    L->tag=1;
        

    for(i=2; i<=n; i++)//初始化循环链表
    {
        q=(LinkList)malloc(sizeof(LNode));
        p->next=q;
        q->data=a[i];
        q->tag=i;
        p=p->next;
    }

    p->next=L;
   

    for(j=1; j<=m; j++)//各个元素结点出列的过程
    {
        if(p->next->data==j)
        {
            s=p->next->next;
            m=p->next->data;
            j=1;
            printf("%d\n",p->next->tag);
            q=p->next;
            free(q);
            p->next=s;
        


        }
        p=p->next;
        
        if(p->next==p)
        {
            printf("%d",p->tag);//最后一个元素结点的输出
            break;
        }
        
    }
}

搜索更多相关主题的帖子: 运行 实验 结果 数据结构 约瑟夫 
2009-10-25 11:25
chengUFO
Rank: 1
等 级:新手上路
帖 子:65
专家分:5
注 册:2009-8-8
收藏
得分:0 
知道怎么情况了。。。
2009-10-25 21:15
xiehaishui
Rank: 1
等 级:新手上路
威 望:1
帖 子:9
专家分:3
注 册:2009-7-2
收藏
得分:0 
这是我编的一个约瑟夫程序可以运行,你自己看一下
#include<iostream>
using namespace std;
class LinkNode{
friend class Circle;
private:
    int data;
    LinkNode *next;
};
class Circle{
public:
    Circle(){head=new LinkNode;};
    void Create_Circle(int x);
    //void display();
    int Josephus(int x,int y);
 
private:
    LinkNode *head;
};
void Circle::Create_Circle(int x)
{
    LinkNode *p,*q;
    int m;
    cout<<"输入第一个节点的值"<<endl;
    cin>>m;
    head->data=m;
    head->next=head;
    q=head;
    cout<<"输入其他节点的值"<<endl;
    for(int i=1;i<x;i++)
    {
        p=new LinkNode;
        int m;
        cin>>m;
        p->data=m;
        p->next=head;
        q->next=p;
        q=p;
    }
}
/*void Circle::display()
{
    LinkNode *p;
    p=head->next;
    while(p!=head)
    {
        cout<<p->data;
        p=p->next;
    }
}*/
int Circle::Josephus(int x,int y)
{
    LinkNode *p,*q;
    p=head;
    for(int i=0;i<x-1;i++)
    {
        for(int j=1;j<y;j++)
        {
            q=p;
            p=p->next;
        }
        cout<<"出列的人是:"<<p->data<<endl;
        q->next=p->next;
        delete p;
        p=q->next;
    }
    return p->data;
    //cout<<"最后的赢家是:"<<p->data<<endl;
}
void main()
{
    Circle a;
    int m,n;
    cout<<"请输入游戏人数和游戏间隔:"<<endl;
    cin>>m>>n;
//    cout<<"这是一个带头结点的循环链表:"<<endl;
    a.Create_Circle(m);
//    a.display();
    a.Josephus(m,n);
    cout<<"最后的赢家是:"<<a.Josephus(m,n)<<endl;
 
     
}
2009-10-28 13:42
快速回复:数据结构约瑟夫环实验运行怎么没有结果啊??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070027 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved