1
私が書いていることが正しいかどうかはわかりません。私の戦略は、最初に起点リストの最初のノードによって取得され、それによって1つのノードの新しいリストを作成し(起点リストの次のノードを先頭ノードにしながら)、その後、毎回最初のノードおよびリンクそのリストの先頭になることで、新しい逆のリストになります。ここで私はこれまでやっていることです:リンクリストを参照で逆にする関数を記述しようとしています
typedef struct node {
int data;
struct node *next;
} Node;
void reverseList(Node **head) {
Node *curr = *head; //
Node *new_node = *head;
Node *prev = NULL;
new_node->next = NULL; //the new list is to end with the first node of the origin list//
while (curr != NULL) { //traverse through the whole list//
curr = curr->next;
prev = curr; //getting the next first node//
prev->next = new_node; //and making it linked to the new list//
}
*head = new_node; //the new, reversed list//
}
あなたに少し変更し
reverseList
機能を与えるあなたはコードが正しいかどうかということを自分でチェックしてみましたか? –ループを開始する前に、 'head-> next 'を' NULL'に設定するので 'while'ループは1回だけ実行されます。 –
私はNULLの隣にhead->を設定していません... – NoaRoth