私は C を初めて使用するので、私のコードに本当に初心者向けのエラーが表示された場合は、しばらくお待ちください。
宿題の一部として、データを保存するために番号付きリストを作成する必要があります。これまでに行ったことは、リストの各ノードを表す構造体を作成することです (firstNode は、リストの最初のノードを指すグローバル変数です)。
typedef struct Node {
struct Node *next;
int id;
int value;
}Node;
Node *firstNode = NULL;
その後、ノードの値をチェックして新しいノードをリストに挿入する関数を作成しました。値が小さいノードは、他のノードの前に配置する必要があります。だから私がしたことはこれでした:
void addNewNode(int nodeId, int nodeValue) {
Node *newNode = (Node*) malloc(sizeof(Node));
Node *temp, *tempPrev;
newNode->id = nodeId;
newNode->value = nodeValue;
if(firstNode == NULL) {
newNode->next = firstNode;
firstNode = newNode;
}
temp = firstNode;
tempPrev = NULL;
while(temp->value < newNode->value) {
tempPrev = temp;
temp = temp->next;
}
if(tempPrev == NULL) {
newNode->next = firstNode;
firstNode = newNode;
}
else {
tempPrev->next = newNode;
newNode->next = temp;
}
}
上記のコードの問題は、時々プログラムがクラッシュすることですが、エラーが見つかりません!
また、私が次にやろうとしているのは、いくつかのノードが同じ値を持つ場合、ID に従って並べ替えられることです (ID が小さいノードが最初に来ます)。これどうやってするの?私は本当に混乱しています!