问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

josephus问题,用C语言顺序表描述,输出结果错误且出现-572662307。求大神帮忙看看代码哪里出错了!谢~

发布网友 发布时间:2023-05-01 12:28

我来回答

2个回答

热心网友 时间:2023-10-11 22:50

#include <stdio.h>
#include <malloc.h>

#define FALSE 0
#define TRUE 1

typedef int DataType;

typedef struct SeqList {
DataType *element;
int n;    // 现有元素个数
int size; // 极限表长
}*PSeqList;

PSeqList createNullList_Seq(int length) { //创建空表
PSeqList palist = (PSeqList)malloc(sizeof(struct SeqList));
if(palist) {
palist->element = (DataType *)malloc(sizeof(sizeof(DataType) * length));
if(palist->element) {
palist->n = 0;
palist->size = length;
return palist;
}
}
printf("Out of space!!\n");
return NULL;
}

int isNullList_seq(PSeqList palist) { //判别palist所指顺序表是否为空表。
return (palist->n == 0);
}

int isFullList_seq(PSeqList palist) { //判别palist所指顺序表是否为满表。
return (palist->n == palist->size);
}

int insertPre_seq(PSeqList palist, int index, DataType x) { //顺序表的插入
int i;
if(isFullList_seq(palist)) {
printf("表已满,插入操作失败!\n");
return FALSE;
}
if(index < 0 || index > palist->n) {
printf("索引错误,插入操作失败!\n");
return FALSE;
}
if(isNullList_seq(palist)) { //空顺序表插入
palist->element[0] = x; // 插入元素x
palist->n = 1; // 元素个数为1
return TRUE;
}
for(i = palist->n; i > index; i--) {
palist->element[i] = palist->element[i - 1];
}
palist->element[index] = x;
++palist->n;
return TRUE;
}

int deleteP_seq(PSeqList palist, int index) {
int i;
if(index < 0 || index > palist->n - 1){
printf("索引错误,删除操作失败!\n");
return FALSE;
}
for(i = index; i < palist->n - 1; i++){
palist->element[i] = palist->element[i + 1];
}
--palist->n;
return TRUE;
}

void josephus_seq(PSeqList palist, int m) {
int i = 0,count = 1,n = palist->n;
while(n) {
if(palist->element[i]) {
if(count == m) {
printf("Out element[%d] = %d\n", i, palist->element[i]);
palist->element[i] = 0;
--n;
count = 0;
}
++count;
}
i = (i + 1) % palist->n;
}
}

int main(){
PSeqList jos_alist;
int i, n, m;
printf("Please input the values of n = ");
scanf("%d", &n);
//scanf_s("%d", &n);
//printf("\n Please input the values of s = ");
//scanf_s("%d", &s);
printf("Please input the values of m = ");
scanf("%d", &m);
//scanf_s("%d", &m);
jos_alist = createNullList_Seq(n);
if(jos_alist) {
for(i = 0; i < n; i++){
insertPre_seq(jos_alist, i, i + 1);
}
josephus_seq(jos_alist, m);
if(jos_alist->element) free(jos_alist->element);
if(jos_alist) free(jos_alist);
}
return 0;
}

热心网友 时间:2023-10-11 22:50

这种情况极大可能是有个变量或成员变量 没有初始化导致的.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求这图片原图或者主角 出自哪一边电影或者电视剧 哪位大神知道这张图原版在吗?求原版。。。 在word中加下划线时第一次出现一条下划线第二次怎么就出现两条... 诛仙2资料站里的宠物展示能在npc买到吗 求一些诛仙2中的可以变为人形的宠物名字 诛仙2 神域的神农殿里,这是什么东西 诛仙2宠物元神问题 诛仙2 商城 中 宠物元神 怎么比 宠物 还贵啊?宠物元神是干什么的啊... 电热水器怎么安固定花洒 猛鬼夜惊魂剧情介绍 jos is a spacaman 对划线部分提问 换热器太长时间没清洗,有点堵塞怎么办啊 梦见领导推荐的预兆 农保分段支付什么意思? 抖音拍摄时刻是什么 新农合基金支付是什么意思 抖音时刻限时拍摄什么意思 哪个做微信背景更好看? 个人参保信息变更是什么意思 歌曲《你的样子》的歌词是什么意思? 上四险的时候是农村户口,现在已经转成城镇户口了,社保变更应该怎么办 请问credit card authorization form最后那个什么posted JE是什么意思啊,谢谢 【求翻译】喜欢一首日文歌,但是不懂中文意思,有哪位学日语的朋友能帮忙翻译一下吗?多谢! 会计 发额、发生额 这两个词什么区别?如图 微信小程序的事业单位考试题库怎么样 用友t3报表中总账函数qc代表什么 我爱你不光是你的样子,还因为和你在一起我的样子表达什么意思 社保缴费历史信息变更什么意思 移动互联网时代,一个手机号可以产生哪些收益?来一起薅羊毛! 请问会计中转账的代码JE是什么英文的缩写 国语《卡门》是谁唱的 about De Moivre’s Theorem 梦见地下冒水是什么意思 梦到地下冒水是什么预兆 モデル是什么意思 湘西地区最适合发展的农业模式是什么A河谷农业B灌溉农业C立体农业D休闲农业? 二战期间,德国的“国民掷弹兵”的军服是不是都是从死人身上扒下来的?“国民冲锋队”是不是没有军服? 梦见马桶堵了有什么预兆?是什么意思? 梦见不冲马桶的预兆 梦到马桶堵 哈是什么颜色 方圆500里是什么意思? 今日头条APP的邀请码如何使用 spss描述分析中里选项中的范围指的是什么意思? Excel里面这个选择范围表示什么意思 什么是一个字符串的子串呀? 按照严蔚敏的书,子串是否空串包括空串? 梦见挖爷爷坟墓从修更好还有的预兆 夫妻买房一人征信有一次逾期 汇仁玛咖牡蛎片是真的吗? 打印机印字的叫什么