-2

ヘッダー ファイル内:

struct myStruct{
  int data;
  struct myStruct *next;
};

typedef struct myStruct myStruct;

相対機能:

myStruct * create(){
  myStruct * a = NULL;
  int size;
  printf("Enter Size of List : ");
  scanf("%d",&size);

  for(int i = 0;i<size;i++){
  /*
   * can't seem to figure out how to do this correctly.
   * 
   * I know I have to use malloc(sizeof()),etc..
   *
   * I've only had success with creating the list backwards.
   * 
   * In this loop there would be a scan from user input for 
   *      the data instance
   */
  }
return a;
}

だから私はそれはかなり簡単だと思います。どんな助けでも大歓迎です。

4

2 に答える 2

3

このようなことができます。

// Get user input and store it in the list
void getValue(myStruct *ptr)
{
    printf("\nEnter Data:");
    scanf("%d",&ptr->data);
    ptr->next=NULL;
}

myStruct * create()
{
   myStruct * a_head = NULL;  // start of list
   myStruct * a_tail = NULL;  // end of list
   int size,i;
   printf("Enter Size of List : ");
   scanf("%d",&size);

   for(i=0;i<size;i++)
   {
      // Creating first node
      if(i==0)
      {
         a_head=a_tail=malloc(sizeof(myStruct));
         getValue(a_tail);
      }
      // Creating other nodes
      else
      {
         a_tail->next=malloc(sizeof(myStruct)); // adding new node to the end of non-empty list
         getValue(a_tail->next); // Insert data into the new node
         a_tail=a_tail->next; // update tail pointer
      }
   }
return a_head;
}
于 2013-10-03T04:01:22.237 に答える
0

そのループ内で、for必要なノードを何らかの方法で作成し (おそらくユーザーに入力を求めて、malloc()あなたが言うように使用します)、前のものからリンクする必要があります。この場合、リストの最後の要素へのポインターを保持する必要があります。これは、リンクされたときに新しい要素を指すものになるためです。

これの学術的だが機能的な実装は、私の大学のこのプロジェクトにあります。

于 2013-10-03T03:37:40.717 に答える