1

これが私のコードです...私の理解では、関数を引数として取る関数「マップ」を作成することになっています。計画通りに進んでいません。どんな助けも完全に素晴らしいでしょう。

これは、コンパイル可能な (コンパイル可能ではありませんが、縮小された) バージョンのコードです。

#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
int main(int argc, const char *argv[])
{
//it should be apparent that I am quite new to C, I have some java experience.
struct linkedList {
   int count;
   int num;
   struct linkedList *next;
};
struct linkedList *head, *tail, *curr;
int count1=0;
int i=0;

int square(int v) {return v=v*v;}

void map(int (*func)(int v), struct linkedList){
    struct linkedList2 *head, *tail, *curr;
    for(curr=head; curr!=NULL; curr=curr->next){
        curr->num=func(curr->num);
        printList();
    }
}

void start(){
    printf("This program will ONLY accept integer input.\n");
    head=NULL;
    for(i=1;i<=4;i++) {
        count1++;
        curr=malloc(sizeof(struct linkedList));
        curr->count=count1;
        printf("Enter a number: ");
        scanf("%d", &curr->num);
        if(head==NULL) { head=curr; }
        else { tail->next=curr; }
        tail=curr;
        tail->next=NULL;
    }
    printf("A list has been created.\n");
}

void printList(){
    printf("The list now contains these numbers: ");
    for(curr=head;curr!=NULL;curr=curr->next){
        printf("%d, ", curr->num);
    }
    printf("\n");
}

 start();
 printList();

 map(square, linkedList);
 printList();
 system("PAUSE");   
 return 0;
}
4

1 に答える 1

1

これらの構造体と関数を の中ですべて定義するのは、Cのmain書き方ではありません。int main(int argc, const char *argv[]) {printListmainmain

さらに、 の定義にmapは未完成のプロトタイプがあるようです。2 番目のパラメーターが使用されていない の代わりにvoid map(int (*func)(int v), struct linkedList)、必要ですvoid map(int (*func)(int v), struct linkedList* head)(そして、次の行での宣言を取り除きheadます)。また、linkedList2ここではおそらく に変更する必要がありますlinkedList。さらに、電話をかけようとする試みmapmain無意味map(square, linkedList)です。を使用しますmap(square, head)

于 2012-04-12T21:41:59.987 に答える