私の割り当てでは、引数として "LNode"構造体と整数引数へのポインタをとる関数を記述する必要があります。次に、その整数をリンクリストに追加するだけでなく、リストが適切な昇順になるように配置する必要があります。私はこれでいくつかのさまざまな試みを試みました。これは投稿時のコードです。私はそれを実行し、5その後、3を言う挿入しようとするとCでのリンクリストの追加とソート
LNode* AddItem(LNode *headPtr, int newItem)
{
auto LNode *ptr = headPtr;
ptr = malloc(sizeof(LNode));
if (headPtr == NULL)
{
ptr->value = newItem;
ptr->next = headPtr;
return ptr;
}
else
{
while (headPtr->value > newItem || ptr->next != NULL)
{
printf("While\n"); // This is simply to let me know how many times the loop runs
headPtr = headPtr->next;
}
ptr->value = newItem;
ptr->next = headPtr;
return ptr;
}
} // end of "AddItem"
、5が挿入されたが、その後whileループは一度実行され、私はセグメンテーションフォールトを取得します。
また、このプロジェクトのスケルトンコードの一部として、引数を変更することはできません。助けることができる誰にも感謝します。
それは、これが
typedef struct LNode
{
int value;
struct LNode *next;
} LNode;
まだgdbでの経験はありますか?プログラムが実行されている間、すべての変数が何をしているのかを見ることは有益です。 – gcbenison
はあなたのヘッドノードとptr新しいノードのheadPtrですか? –