使用typedefinitionsのリストに配列は、C(繰り返し)
List arrayToList(int arr[],int n,int idx) {
if (n==idx) return NULL;
List list=malloc(sizeof(Node));
list->next=arrayToList(arr,n,idx+1);
list->item=arr[idx];
return list;
}
UPDATE:以下はほとんど正しいですが、私はなぜ知りません最後にゼロが印刷されます。
List newNode() {
List li=malloc(sizeof(Node));
return li;
}
List arrayToList(int arr[],int n) {
List li=newNode();
List li1=li; /*save the beginning of the list*/
int i;
for (i=0;i<n;i++) {
li->item=arr[i];
li->next=newNode();
li=li->next;
}
li=NULL;
return li1;
}
void printList(List li) {
while (li!=NULL) {
li=li->next;
}
printf("\n");
}
int main(int argc, char* argv[]) {
int arr[]={4,1,2,3,4,7,4,5,6,8};
List li=arrayToList(arr,10);
printList(li);
return 0;
}
出力は次のとおりです。4 1 2 3 4 7 4 5 6 8 0。
UPDATE 2:このいずれかに機能がprintlistを変更すると、私に正しい出力を与える:
void printList(List li) {
while (li->next!=NULL) {
printf("%d ",li->item);
li=li->next;
}
printf("\n");
}
しかし、私は、私はガードとしてli->next!=NULL
を持っている必要があり、なぜ疑問に残っていますか?
"私は不思議です"。考えを共有する。 –
あなたのリストの最後の要素がnullを指しているので、 'li-> next!= NULL'が必要です。 –