约瑟夫环程序有点小问题

CoKKKKde 2016-10-13 09:31:51
# include<stdio.h>
# include<malloc.h>
typedef struct Node
{
int id;
int mima;
struct Node *next;
}Node,*Linklist;
void Create(Linklist &L,int num) //创建
{
L=(Node*)malloc(sizeof(Linklist));
L->id=0;
L->mima=0;
L->next=L;
Node *r,*s;
r=L;
int j=1;
while(num--)
{
s=(Node*)malloc(sizeof(Linklist));
printf("\n请输入第%d结点的ID和密码:\t",j);
j++;
scanf("%d",&s->id);
scanf("%d",&s->mima);
r->next=s;
r=s;
}
r->next=L;
}
void Delete(Linklist &L,Linklist &P,Linklist T) //删除
{
P->next=T->next;
free(T);
}


Linklist loca(Linklist &L,int *n) //查找-
{
Node *s;
for(int i=1;i<*n;i++)
{
L=L->next;
}
s=L->next;
*n=s->mima;
return s;
}
int main()
{
Linklist L,P,T; //T是中间量 P是为了重新连接环的量 L是要改的量
int num,mima;
printf("人数 和 初始密码 为\t");
scanf("%d%d",&num,&mima);
Create(L,num);
P=L;
for(int i=1;i<=num;i++)
{
T=loca(P,&mima);

printf("%d\t ",T->id);

Delete(L,P,T);
}
return 0;
}

执行结果:
人数 和 初始密码 为 5
2

请输入第1结点的ID和密码: 1
2

请输入第2结点的ID和密码: 2
1

请输入第3结点的ID和密码: 3
3

请输入第4结点的ID和密码: 4
2

请输入第5结点的ID和密码: 5
2
2 3 0 1 5
--------------------------------
Process exited with return value 0
Press any key to continue . . .

结果里面有一个不知道问题 出现地址应该是有一个值没有被赋值上!不知道怎么办

...全文
197 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 版主 2016-10-14
  • 打赏
  • 举报
回复
你这个申请空间就不对L = (Node*)malloc(sizeof(Linklist));
Linklist是指针类型,sizeof(Linklist)在32位机下恒为4,而它需要的空间显然是大于4的
你也可以单步调试,看看每一步的值是不是都正确,或者在执行完某一步的时候有变量值被修改了(可能是越界)
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧