警告なしでこのプログラムを作成するにはどうすればよいですか?警告のためにテールを初期化しないでください。別のパラメータで毎回関数を呼び出すのではなく、すべてのデータを出力するループを作ろうとしています。 tail =をCOP3330に設定すると、COP3330の情報は表示されません。なぜなら、= NULLになるからです。ありがとうございました!データ構造の割り当てとデータ構造への情報の受け渡し
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
typedef struct UCF_Classes
{
char *ClassIdentifier, *ClassName, *Department;
int Credits;
struct UCF_Classes *next;
}Info;
Info *CreateList(char *ClassNumber, char *NameOfClass, char *DepartmentName, int NumOfCredits)
{
Info *NewClass;
NewClass = (Info *) malloc(sizeof(Info));
NewClass->ClassIdentifier = ClassNumber;
NewClass->ClassName = NameOfClass;
NewClass->Department = DepartmentName;
NewClass->Credits = NumOfCredits;
return NewClass;
}
void WalkListAndDisplay(Info *walker)
{
printf("%s\n", walker->ClassIdentifier);
printf("%s\n", walker->ClassName);
printf("%s\n", walker->Department);
printf("%d\n\n", walker->Credits);
}
int main()
{
Info *COP3223, *COP3502C, *COP3503C, *COP3330, *head, *tail;
COP3223 = CreateList("COP3223", "Intro to Programming with C", "College of Engineering and Computer Science", 3);
COP3502C = CreateList("COP3502C", "Computer Science I", "College of Engineering and Computer Science", 3);
COP3503C = CreateList("COP3503C", "Computer Science II", "College of Engineering and Computer Science", 3);
COP3330 = CreateList("COP3330", "Object Oriented Programming", "College of Engineering and Computer Science", 3);
head = COP3223;
COP3223->next = COP3502C;
COP3502C->next = COP3503C;
COP3503C->next = COP3330;
COP3330->next = tail;
tail->next = NULL;
while(head->next != NULL)
{
WalkListAndDisplay(head);
head = head->next;
}
return 0;
}
あなたはどちらか、 'ポイントにtail'ポインタ、およびなし初期値のための任意のメモリを割り当てていません。あなたのコードから、 'tail 'は本当に必要ではありません。単に' COP3330-> next'を 'NULL'にするだけです。 – SSC
まず、セミノール州立大学のSSCは何ですか?第二に、もし私がそれを行うなら、NULLに達すると私のwhileループが停止するので、COP3330の最後のデータは表示されません。その他の提案はありますか? –
whileループを 'while(head!= NULL)'に変更する必要があるようです。あなたのコードに 'tail 'を付けることはバグを隠していました。 – vestlen