0

C で単純なテキスト エディターを使用しています。リンク リストに要素を挿入する際に問題があります。

これが私の構造です:

 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,*insert_node=NULL;
    temp=(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;

            if(temp->previous==NULL) //this is for inserting at the first
            {
                   insert_node->next=temp;
                   head=insert_node;
            }

            else                     //this is for inserting in the middle.
            {
                            temp1=temp;
                temp=insert_node;
                insert_node->next=temp1;
            }

                flag=1;
                            break;
            }
                temp=temp->next;
        }

//this one's for the normal insertion and the end of the linked list.
if(flag==0)
    characters(ch,xpos,ypos);
}

最初と中間の挿入はどれも機能しません。どこが間違っていたのかわかりません。私を助けてください。

4

3 に答える 3

4
temp=(struct node *)malloc(sizeof(struct node));
temp=head;

新しいノードにスペースを割り当てていますが、この新しいノード割り当てのアドレスを失いtemp=headます。

于 2013-08-05T11:33:02.173 に答える