吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2970|回复: 14
收起左侧

[C&C++ 转载] C语言-VS2008-约瑟夫问题

[复制链接]
zyz 发表于 2017-11-22 20:29
本帖最后由 zyz 于 2017-11-22 21:14 编辑

是西电2016和2017年计算机科学与技术专业的考研题,约瑟夫问题,能单步调试得到正确结果,试卷挖了几个空,题目中pNode removeNode(pNode currentNode)函数中free()函数是没有注释的


经过测试问题出在pNode removeNode(pNode currentNode)请大佬们分析一下这个函数,尤其是free那里
[C++] 纯文本查看 复制代码
#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[4]={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;
}

免费评分

参与人数 1吾爱币 +1 收起 理由
逄不怪 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

6767 发表于 2017-11-22 22:32
18行,pNode
典型手贱的错误
没有良好的类型检查的问题

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
zyz + 1 + 1 用心讨论,共获提升!

查看全部评分

冀中平原 发表于 2017-11-22 20:47
 楼主| zyz 发表于 2017-11-22 20:31
 楼主| zyz 发表于 2017-11-22 20:32
西电连续两年考这个,跪求修改后的代码
 楼主| zyz 发表于 2017-11-22 20:53

可怜啊,好多分呢
 楼主| zyz 发表于 2017-11-22 20:54
我写的这个如果不注释free那句就是这种错误
q.png
ftmovie 发表于 2017-11-22 21:06 来自手机
分解了1.1点测试一下
 楼主| zyz 发表于 2017-11-22 21:12
ftmovie 发表于 2017-11-22 21:06
分解了1.1点测试一下

单步调试没有任何问题,直到运行完出现正确的结果也没出错
万远方 发表于 2017-11-22 22:17
很久没来了,前排帮你顶一下,很久没碰C语言了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 08:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表