gpt4 book ai didi

反向遍历双向链表时崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 05:10:31 24 4
gpt4 key购买 nike

typedef struct tape
{
char symbol;
struct tape *next;
struct tape *prev;
}tape;

tape *pt;

void GenerateInputTape(int n)
{
int i;

pt=(tape*)malloc(sizeof(tape));

pt->symbol='B';

pt->prev=NULL;
pt->next=(tape*)malloc(sizeof(tape));
pt=pt->next;

for(i=0;i<2*(n+1);i++)
{
if(i < (2*n/2))
pt->symbol='0';
else
pt->symbol='1';

pt->prev=pt;
pt->next=(tape*)malloc(sizeof(tape));
pt=pt->next;
}

pt->symbol='B';

pt->next=NULL;
}

void ShowTape()
{
//Move tape to the beginning
while (pt->prev != NULL)
pt=pt->prev; //crash point

//List out all of the elements
while ((pt->next) != NULL)
{
printf("%c",pt->symbol);
pt=pt->next;
}
puts("\n");
}

这是一个程序代码片段,旨在创建一个双向链表,用 B0...n011....(n+1)1B 个字符填充它并打印它们。不幸的是,它在返回时崩溃了。为什么?

Unhandled exception at 0x771a15de in turing_machine.exe: 0xC0000005: Access violation reading location 0xcdcdcdd5.

最佳答案

你没有正确设置 pt->prev

代替

pt->prev=pt;
pt->next=(tape*)malloc(sizeof(tape));

尝试:

pt->next = malloc(sizeof(tape));
pt->next->prev = pt;

关于反向遍历双向链表时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com