リンクリストの最後にノードを追加しようとしています。私はvoid関数を使用し、それに私の構造体を渡しますが、一度それはadd関数を実行した後、私の構造体はまだ空です。ここにコードがあります。リンクリストの最後にノードを追加する
struct part {
char* name;
float price;
int quantity;
struct part *next;
};
typedef struct part partType;
void addEnd(partType *item)
{
partType *temp1=NULL, *temp2=NULL;
char temp[100];
temp1=(struct part *)malloc(sizeof(partType));
if (!temp1)
printf("malloc failed\n");
temp1->name = malloc(sizeof(char)*100);
printf("Please enter item name: \n");
fgets(temp, 100, stdin);
strcpy(temp1->name, temp);
printf("Please enter item price: \n");
fgets(temp, 100, stdin);
sscanf(temp, "%f", &temp1->price);
printf("Please enter item quantity: \n");
fgets(temp, 100, stdin);
sscanf(temp, "%d", &temp1->quantity);
// Copying the Head location into another node.
temp2=item;
if(item == NULL)
{
// If List is empty we create First Node.
item=temp1;
item->next=NULL;
printf("%s%.2f\n%d\n", item->name, item->price, item->quantity);
}
else
{
// Traverse down to end of the list.
while(temp2->next != NULL)
temp2=temp2->next;
// Append at the end of the list.
temp1->next=NULL;
temp2->next=temp1;
printf("%s%.2f\n%d\n", item->name, item->price, item->quantity);
}
}
項目は、それが最初に関数に渡されたときはnullですが、いくつかの理由のために私がTEMP1に等しい項目を設定し、if文を持っているにもかかわらず、ヌル出てきます。
としてこれを呼ぶだろうデバッガ?これは、変数がどのように変化しているのか、プログラムがコントロール構造(if文とループif)をどのように流れるのかを確認するのに最適な方法です。 IDEのビルトインビジュアルデバッグツールを使用するか、コマンドラインからGDBを使用してください。 – Cam