题目:
我的代码:(用的是只含尾指针的循环链表)#include <stdio.h>
#include <stdlib.h>
#define N 13
struct LinkList
{
int n;
LinkList *next;
}*rear;
void CreateChain()
{
LinkList *p=rear=(LinkList*)malloc(sizeof(LinkList));
for (int i=1;i<=N;i++)
{
p->next=(LinkList*)malloc(sizeof(LinkList));
p=p->next;
p->n=i;
}
p->next=rear->next;
rear->next=p;
}
int main()
{
CreateChain();
LinkList *p1=rear->next,
*p2; //删除指针时用
int n;
for (int i=1;i<=N;i++)
{
n=i;
while (--n) // 指针走到该到的位置
p1=p1->next;
printf("黑桃%d放在第%d张\n",i,p1->next->n);
p2=p1->next->next;
//printf("删除了%d\n",p1->next->n);//测试是否正确删除结点
free(p1->next);
p1->next=NULL;
p1->next=p2;
}
free(rear);
system("pause");
return 0;
}
编译器:VS2010
运行时错误为:
Windows 已在 魔术师发牌问题.exe 中触发一个断点。
其原因可能是堆被损坏,这说明 魔术师发牌问题.exe 中或它所加载的任何 DLL 中有 Bug。
原因也可能是用户在 魔术师发牌问题.exe 具有焦点时按下了 F12。
输出窗口可能提供了更多诊断信息。
截图如下:
求解为毛??????
|