小周打bug 2021-10-08 08:46 采纳率: 100%
浏览 61
已结题

C++创建单循环链表写约瑟夫环问题报错内存访问权限冲突

创建循环单链表写约瑟夫环问题,一直报错0xDDDDDDDD
源代码
#include
using namespace std;
struct Node//结点类型
{
int data; //数据域
Node* next; //指针域
};
int main()
{
int num, k;//n为人数,k为报数到几出列
cout << "请输入参加游戏的人数:";
cin >> num;
cout << "每报数到几出列:";
cin >> k;
struct Node* H = NULL, * r = NULL;//H是头指针,r是尾指针,都先赋初值为空
struct Node* p, * q;//用两个指针方便后面删除操作,使q一直是p的前驱
//创建一个无头结点的循环单链表,从尾部插入n个节点
for (int i = 1; i <= num; i++)
{
p = (struct Node*)malloc(sizeof(struct Node));
p->data = i;
if (H == NULL)//对于第一个节点的操作
H = r = p;//使头尾指针都指向第一个节点,同时也固定了头指针
else//对于其他节点的操作
{
p->next = H;//新增节点指向头指针,实现循环
r->next = p;
r = p;//新表尾替换旧表尾
}
}
p = H; q = r;//p指向第一个节点,q指向表尾,q一直做p前驱
int count = 0;//记录出列人数
while (count != num)//count=num代表所有人都出列
{
for (int j = 1; j <= k;)
{
if (j != k)
{
q = q->next;
p = p->next;
j++;
}
if (j == k)//报数到k删除节点
{
count++;
q->next = p->next;
cout << "第" << count << "个出列的人是:" << p->data << endl;
free(p);//删除p
p = q->next;//让p重新指向q的后继
j = 1;
}
}
}
return 0;
}

img

报错:

img

  • 写回答

1条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 已结题 10月10日
      • 已采纳回答 10月8日
      • 创建了问题 10月8日

      悬赏问题

      • ¥15 求一个超难的动态新增元素的 click 事件无效的解决办法。
      • ¥20 怎么修改mediawiki允许上传的文件大小?
      • ¥15 agrySEXPAYm 是毒吗
      • ¥50 Java实现注册登录实现数据库增删改查功能,数据库至少两个表
      • ¥20 求解R语言的数据分析问题
      • ¥20 求GD32F105和305解除读保护方法教程
      • ¥15 C++代码优化,复杂度太高,无法通过clang-tidy检查,用什么办法可以优=化
      • ¥15 关于跨链隐私保护方案
      • ¥15 node mongodb 根据id给子集合list添加对象 请问应该如何操作
      • ¥50 如何得到路径下的绝对路径并且回传到list上