c言語のcreatelist関数の宣言文を教えてください
C言語では、createlist関数は次のように宣言できます。
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* createlist(int arr[], int n) {
struct ListNode *head = NULL;
struct ListNode *curr = NULL;
for (int i = 0; i < n; i++) {
struct ListNode *newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
newNode->val = arr[i];
newNode->next = NULL;
if (head == NULL) {
head = newNode;
curr = newNode;
} else {
curr->next = newNode;
curr = curr->next;
}
}
return head;
}
たとえば、与えられた配列から連結リストを作成するために使用される createlist 関数の宣言は次のとおりです。 関数は最初に、整数 val と次のノードへのポインタ next を含む構造体 ListNode を定義します。 次に関数 createlist を宣言しますが、この関数の引数は整数配列 arr と配列の長さ n です。 関数の内部では、最初にヘッダノード head と現在のノード curr を作成して NULL に初期化します。 次に、配列を反復処理して新しいノードを作成し、それらを連結リストに追加します。 最後に、ヘッダノード head を返します。