C语言-VS2008-约瑟夫问题
本帖最后由 zyz 于 2017-11-22 21:14 编辑是西电2016和2017年计算机科学与技术专业的考研题,约瑟夫问题,能单步调试得到正确结果,试卷挖了几个空,题目中pNode removeNode(pNode currentNode)函数中free()函数是没有注释的
经过测试问题出在pNode removeNode(pNode currentNode)请大佬们分析一下这个函数,尤其是free那里
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int id;
struct node *next;
struct node *pre;
}Node, *pNode;
pNode RingConstruct(int n){
int i;
pNode head,p,q;
head=(pNode)malloc(sizeof(Node));
head->id=1;
p=head;
for(i=2;i<=n;i++){
q=(pNode)malloc(sizeof(pNode));
q->id=i;
p->next=q;
q->pre=p;
p=q;
}
p->next=head;
head->pre=p;
return head;
}
int boundMachine(int order)
{
int boundlist={3,7,11,19};
return boundlist[(order-1)%4];
}
pNode count(pNode first,int bound){
pNode q=first;
for(int i=2;i<=bound;i++)
q=q->next;
return q;
}
pNode removeNode(pNode currentNode){
pNode first=currentNode->next;
pNode p=currentNode;
while(currentNode !=p->next) p=p->next;
p->next=first;
first->pre=p;
printf("%d->",currentNode->id);
//free(currentNode);
return first;
}
int main()
{
pNode first,toRemove;
int i;
first=RingConstruct(20);
for(i=1;i<=20;i++){
toRemove=count(first,boundMachine(i));
first=removeNode(toRemove);
}
return 0;
}
18行,pNode
典型手贱的错误
没有良好的类型检查的问题 一脸懵逼 有学长学姐会吗? 西电连续两年考这个,跪求修改后的代码 冀中平原 发表于 2017-11-22 20:47
一脸懵逼
{:1_937:}可怜啊,好多分呢 我写的这个如果不注释free那句就是这种错误 分解了1.1点测试一下 ftmovie 发表于 2017-11-22 21:06
分解了1.1点测试一下
单步调试没有任何问题,直到运行完出现正确的结果也没出错 很久没来了,前排帮你顶一下,很久没碰C语言了
页:
[1]
2