c语言 数据结构 约瑟夫环 创建单向循环链表 一直报错 10
#include<stdio.h>#include<stdlib.h>typedefstructLNode{intnum;intkey;structLNode*next;...
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{
int num;
int key;
struct LNode *next;
}LNode,*LinkList;
void CreateList(LinkList &L);
int ListLength(LNode *L);
int main()
{
int m,n,i;
LNode *L,*p,*q,*r;
scanf("%d%d",&m,&n);
CreateList(L);
p=L->next;
while(ListLength(L)!=1)
{
q=p;
for(i=1;i<m;i++)
{
q=p;
p=p->next;
if(p==L)
{
q=p;
p=p->next;
}
}
printf("%d ",p->num);
m=p->key;
if(p!=q)
{
q->next=p->next;
free(p);
p=q->next;
if(p==L)
p=p->next;
}
else
{
r=L;
while(r->next!=q)
r=r->next;
r->next=q->next;
free(q);
p=r->next;
if(p==L)
p=p->next;
}
}
if(p!=L)
printf("%d\n",p->num);
else
printf("%d\n",p->next->num);
}
void CreateList(LinkList &L)
{
LinkList p,q;
L=(LinkList)malloc(sizeof(LNode));
for(int i=1;i<=n;i++)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->key);
p->num=i;
if(i==1)
L->next=p;
else
q->next=p;
q=p;
if(i==n)
p->next=L;
}
}
int ListLength(LNode *L)
{
int i=0;
LNode *p;
p=L;
while( p->next!=L )
{
i++;
p=p->next;
}
return i;
}
把文件名从.c改成.cpp就好了…… 展开
#include<stdlib.h>
typedef struct LNode
{
int num;
int key;
struct LNode *next;
}LNode,*LinkList;
void CreateList(LinkList &L);
int ListLength(LNode *L);
int main()
{
int m,n,i;
LNode *L,*p,*q,*r;
scanf("%d%d",&m,&n);
CreateList(L);
p=L->next;
while(ListLength(L)!=1)
{
q=p;
for(i=1;i<m;i++)
{
q=p;
p=p->next;
if(p==L)
{
q=p;
p=p->next;
}
}
printf("%d ",p->num);
m=p->key;
if(p!=q)
{
q->next=p->next;
free(p);
p=q->next;
if(p==L)
p=p->next;
}
else
{
r=L;
while(r->next!=q)
r=r->next;
r->next=q->next;
free(q);
p=r->next;
if(p==L)
p=p->next;
}
}
if(p!=L)
printf("%d\n",p->num);
else
printf("%d\n",p->next->num);
}
void CreateList(LinkList &L)
{
LinkList p,q;
L=(LinkList)malloc(sizeof(LNode));
for(int i=1;i<=n;i++)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->key);
p->num=i;
if(i==1)
L->next=p;
else
q->next=p;
q=p;
if(i==n)
p->next=L;
}
}
int ListLength(LNode *L)
{
int i=0;
LNode *p;
p=L;
while( p->next!=L )
{
i++;
p=p->next;
}
return i;
}
把文件名从.c改成.cpp就好了…… 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询