-2

ヘッダー ノードを持つリンク リストを使用してキューを実装しようとしています。プログラムはコンパイル中ですが、実行時エラーが発生しています。何を変更すればよいか教えてください。

表示機能は問題ありません。

#include <stdio.h>
#include <stdlib.h>
#define MALLOC(p,n,type)        \
p=(type*)malloc(n*sizeof(type));    \

struct node
{
    int info;
    struct node *link;
};
typedef struct node *NODE;

NODE insert_rear(int item,NODE head)
{

NODE temp;
MALLOC(temp,1,struct node);
temp->info=item;
temp->link=NULL;
if(head==NULL)
{
    head->link=temp;
    return head;

}
NODE cur;

while(cur->link!=NULL)
{
    cur=cur->link;
}
cur->link=temp;

return head;
}

NODE delete_front(NODE head)
{
    if(head==NULL)
    {
        printf("Empty");
        return head;

    }
    NODE temp,first;
    first=head->link;
    head->link=first->link;
    printf("Item deleted is %d",first->info);
    free(first);


    return head;
}
4

1 に答える 1

1

この行はあなたにとって意味がありますか?

if(head==NULL)
{
    head->link=temp;

言い換えると、headが NULL の場合、先に進み、既知の無効なポインターを逆参照します。
もちろん、セグフォルトが発生します。


PS
関数 を書くことでこれを見つけましたmain。最も重要なことは、デバッガーでコードをトレースすることです。
デバッガーでコードをトレースする必要があります。

私が使用したmain

int main ()
{
    NODE head = NULL;
    head = insert_rear(3, head);  // <= Breakpoint here.  Step Into

    getchar();
    return 0;
}
于 2013-10-24T14:34:10.890 に答える