我现在知道为什么链接列表没有从之前的问题中更新。事实证明,我必须迭代 x 的坐标,但这在我的这个问题中并不重要。
当我在链接列表中插入一个元素时,我想要插入一个值的元素之前会消失。例如,我有一些元素会打印出“helo”,我想在 e 之后插入另一个“l”,输出将是“(空格)ello。这是我的插入代码和结构:
struct node {
struct node *previous;
int c;
int x;
int y;
struct node *next;
}*head;
void checker(int ch, int xpos, int ypos)
{
int flag=0;
struct node *temp,*temp1,*var,*insert_node;
var=(struct node *)malloc(sizeof(struct node));
temp=(struct node *)malloc(sizeof(struct node));
insert_node=(struct node*)malloc(sizeof(struct node));
temp=head;
while(temp!=NULL)
{
if(temp->x==xpos && temp->y==ypos)
{
insert_node->c=ch;
insert_node->x=xpos;
insert_node->y=ypos;
insert_node->next=NULL;
temp1=temp;
while(temp1!=NULL)
{
if(temp1->y==ypos)
temp1->x++;
temp1=temp1->next;
}
var->next=insert_node;
insert_node->next=temp;
head=var;
flag=1;
break;
}
var=temp;
temp=temp->next;
}
if(flag==0)
characters(ch,xpos,ypos);
}
看起来 var 里面只有一个元素而不是两个元素,它从 helo 中获取“h”是理所当然的。