跪求大佬指导。帮忙分析一下我的代码
emmm输出是就无法运行了,不报错。
我想创建一个循环链表,输出看一下都不行。。。
#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode,*LinkList;
void creat(LinkList head,int n);
//void find(LinkList head,int n,int m,int k);
int main()
{
int i,n,m,k;
LinkList head,q;
printf("Please input the number:\n");
scanf("%d",&n);
printf("Please input the location m you start from:\n");
scanf("%d",&m);
while(m>n||m<1)
{printf("error!try again!\n");
scanf("%d",&m);}
printf("Please input the number k where game will stop:\n");
scanf("%d",&k);
creat(head,n);
q=head;
do
{
printf("%d",q->data);
q=q->next;
}while(q->next!=head);
// find(head,n,m,k);
return 0;
}
void creat(LinkList head,int n)
{
int i;
LinkList p,q;
p=q=(LinkList)malloc(sizeof(Lnode));
p->data=1;
p->next=NULL;
head=p;
i=1;
while(i<=n)
{
i++;
p=(LinkList)malloc(sizeof(Lnode));
p->data=i;
q->next=p;
q=p;
}
q->next=head;
}
/*void find(LinkList head,int n,int m,int k)
{
LinkList p=head,q=head;
int i,j,e;
while(p->next->data!=m)
p=p->next;
while(q->next->next->data!=m)
q=q->next;
while(p->next!=p)
{
for(i=1;i<=k;i++)
{
p=p->next;
q=q->next;
}
printf("%d ",p->data);
q=p->next;
p->next==NULL;
free(p);
LinkList p=q->next;
}
}*/
其实主要是想找出约瑟夫圈的问题。。但是无法运行,去掉注释部分就是创建一个循环链表,在主程序里面无法运行,但是在函数里面可以输出。
这个题目是,一圈人报数,从m开始,数到k的人出列,输出出列顺序。
但是我的代码不报错但不可以运行。求大佬说明一下原因!