做数据结构(c语言)约瑟夫环这个程序错在哪了。
#include<cstdlib>#include<iostream>#include<stdio.h>#include<stdlib.h>typedefstructpe...
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
typedef struct people{
int no;
int pass;
struct people *next;
}people,*linklist;//...........linklist...........
//////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
int listinsert(linklist l,int e,int k);
int listrun(linklist l,int h);
linklist l,p;
int h,i,e;
l=(linklist)malloc(sizeof(people));//创建。。。。
if(!l) printf("OVERFOLW\n");
l->next=NULL;
printf("请输入原始密码\n");
scanf("%d",&h);
printf("输入个人密码:\n");
for(i=1;i<8;i++)
{
scanf("%d",&e);
listinsert(l,e,i);
}
p=(linklist)malloc(sizeof(people));//创建。。。。
if(!p) printf("OVERFOLW\n");
p->next=NULL;
p=l;
while(p->next)
p=p->next;
p->next=l->next;//.....连接循环.....
listrun(l,h);
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
int listinsert(linklist l,int e,int k)
{
linklist p,q;
p=l;
while(p->next)。。。。调试错误处。。。。
{
p=p->next;
}
q=(linklist)malloc(sizeof(people));
q->no=k;
q->pass=e;
p->next=q;
return 0;
}//....在最后插入新的结点....
int listrun(linklist l,int h)
{
linklist q;
int i;
while(l->next)
{
for(i=1;i<h;i++)
l=l->next;
q=(linklist)malloc(sizeof(people));
q->next=l->next;
h=q->pass;
printf("%d ",q->no);
l->next=q->next;
free(q);
}
printf("%d\n",l->no);
free(l);
return 0;
}
数据调试是int listinsert(linklist l,int e,int k)错,本来想用倒插法。
求强人解答。。。 展开
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
typedef struct people{
int no;
int pass;
struct people *next;
}people,*linklist;//...........linklist...........
//////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
int listinsert(linklist l,int e,int k);
int listrun(linklist l,int h);
linklist l,p;
int h,i,e;
l=(linklist)malloc(sizeof(people));//创建。。。。
if(!l) printf("OVERFOLW\n");
l->next=NULL;
printf("请输入原始密码\n");
scanf("%d",&h);
printf("输入个人密码:\n");
for(i=1;i<8;i++)
{
scanf("%d",&e);
listinsert(l,e,i);
}
p=(linklist)malloc(sizeof(people));//创建。。。。
if(!p) printf("OVERFOLW\n");
p->next=NULL;
p=l;
while(p->next)
p=p->next;
p->next=l->next;//.....连接循环.....
listrun(l,h);
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
int listinsert(linklist l,int e,int k)
{
linklist p,q;
p=l;
while(p->next)。。。。调试错误处。。。。
{
p=p->next;
}
q=(linklist)malloc(sizeof(people));
q->no=k;
q->pass=e;
p->next=q;
return 0;
}//....在最后插入新的结点....
int listrun(linklist l,int h)
{
linklist q;
int i;
while(l->next)
{
for(i=1;i<h;i++)
l=l->next;
q=(linklist)malloc(sizeof(people));
q->next=l->next;
h=q->pass;
printf("%d ",q->no);
l->next=q->next;
free(q);
}
printf("%d\n",l->no);
free(l);
return 0;
}
数据调试是int listinsert(linklist l,int e,int k)错,本来想用倒插法。
求强人解答。。。 展开
1个回答
展开全部
在listinsert中漏了q->next=NULL:
int listinsert(linklist l,int e,int k)
{
linklist p,q;
p=l;
while(p->next)//调试错误处。。。。
{
p=p->next;
}
q=(linklist)malloc(sizeof(people));
q->no=k;
q->pass=e;
q->next=NULL;//加
p->next=q;
return 0;
}//....在最后插入新的结点....
在listrun有如下问题:
q=(linklist)malloc(sizeof(people));
q->next=l->next;
h=q->pass; //错:q是新建的,何来q->pass?
printf("%d ",q->no); //错:q是新建的,何来q->no?
int listinsert(linklist l,int e,int k)
{
linklist p,q;
p=l;
while(p->next)//调试错误处。。。。
{
p=p->next;
}
q=(linklist)malloc(sizeof(people));
q->no=k;
q->pass=e;
q->next=NULL;//加
p->next=q;
return 0;
}//....在最后插入新的结点....
在listrun有如下问题:
q=(linklist)malloc(sizeof(people));
q->next=l->next;
h=q->pass; //错:q是新建的,何来q->pass?
printf("%d ",q->no); //错:q是新建的,何来q->no?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询