标题:循环单链表 约瑟夫环 输出问题
取消只看楼主
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
结帖率:96.77%
已结贴  问题点数:20 回复次数:0 
循环单链表 约瑟夫环 输出问题
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
    int data;
    //int code;
    struct node * next;
}LNode,*Linklist;
void create_list(Linklist L,int n)
{
    Linklist p,q;
    int i;
    q=L;
    for(i=0;i<n;i++)
    {
        p=(Linklist)malloc(sizeof(LNode));
        printf("data:\n");
        scanf("%d",&p->data);
        //printf("code:\n");
       //scanf("%d",&p->code);
        q->next=p;
        p->next=NULL;
        q=p;
    }
    q->next=L;
}
void chulie(Linklist L,int n)
{
    Linklist p=L;
    Linklist s;
    //int turn ;
    int start;
    int m=0;
    int i;
    printf("please input the first code:\n");
    scanf("%d",&start);
    putchar(10);
    if(start>n)
    {
        printf("Error!\n");
    }
    else
    {
        for(m=1;m<=n-1;m++)//我觉得是这里错了,但是总是到链表结尾的时候溢出,不知道哪里错了,大家给看下吧。。
        {
            for(i=1;i<=start-1;i++)
            {
                p=p->next;   
            }
            printf("%d\n",p->next->data);
            //start=p->next->code;
            s=p->next;
            p->next=s->next;
            free(s);
        }
        printf("%d",p->next->data);
        printf("\n");
    }
    /*if(m==n-1)
    {
        printf("剩下的是:%d",*p);
    }*/

}

void print_list(Linklist L)
{
    Linklist p;
    p=L->next;
    while(p!=L)
    {
        printf("%d \n",p->data);
        p=p->next;
    }
}
int main()
{
    Linklist L;
    int n;
    printf("input the number of the list:\n");
    scanf("%d",&n);
    L=(Linklist)malloc(sizeof(LNode));
    create_list(L,n);
    printf("\n");
    print_list(L);
    chulie(L,n);
    putchar(10);
    return 0;
}


运行结果:



搜索更多相关主题的帖子: next include 约瑟夫 
2012-11-12 17:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-386811-1-1.html




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

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