文字列ポインタの配列{"ab","cd",NULL}をデータ構造のリスト構造にしたいです。
引数を文字列ポインタの配列とし、返り値を構造体のポインタとしたいです。
以下、考えたコードです。
疑問点は、
- 配列を引数に受け取るが再帰ではどのように進めればいいか
- 次の構造体をどのように代入すればいいか
ということです。
C
1 2#include <stdlib.h> 3#include <stdio.h> 4 5// struct定義 6typedef struct wordlist { 7 char *word; 8 struct wordlist *next; 9} WordList; 10 11WordList *function(char **argv){ 12 13 WordList *p ; 14 p = (WordList*) malloc(sizeof(WordList)); 15 WordList *head = NULL; 16 17 // 引数が配列だから再帰処理できない? 18 // NULLまでループ 19 int i = 0; 20 while(argv[i] != NULL){ 21 if(p != NULL){ 22 p->word = argv[i]; 23 }else{ 24 return NULL; 25 } 26 // 次がNULLならnextはNULL 27 if(argv[i+1] == NULL){ 28 p->next == NULL; 29 }else{ 30 //どのように与えるのか 31 p->next = head; 32 } 33 i++; 34 } 35 return result; 36} 37 38int main(void){ 39 char *words[] = { 40 "aa", "bb", "cc", "dd", "ee","NULL", 41 }; 42 WordList *res = function(words); 43 printf("%s\n",res->word); 44 free(res); 45 return 0; 46}
回答3件
あなたの回答
tips
プレビュー