3

これは私の問題です...私はこのコードを持っています(リストの作成)

typedef struct node
{
    int pid;
    int runtime;
    struct node *next;
}job;

int main()
//code
job *first = NULL;
job *last = NULL;
job *newnode;
//code
//from here
if( first == NULL )
{
     first = last = newnode;
     newnode->next = NULL;
}
else
{
     last->next = newnode;
     last = last->next;
}
// to here

だから私はここからここまでの部分を関数でやりたかった(見栄えが良くなるように)そして私はこれをやった..私は関数を作成した

void funct(job ** pfirst, job **plast, job*newnode);

私が使用する強力な部分の代わりにメインで:

 funct(&first, &last, newnode);

そして機能はこのようなものでした

void funct(job ** pfirst, job **plast, job*newnode)
{
   if(*pfirst == NULL)
   {
      *pfirst = *plast = newnode;
       newnode->next = NULL;
   }
   else
   {
      *plast->next = newnode;//<----
      *plast = *plast->next;//<----
   }
}

エラーは矢印の中にあり、構造体の一部ではありません..

4

2 に答える 2

5

->(逆参照) 演算子よりも優先順位が高いため、優先順位を上書きするに*はかっこが必要です。次のように修正します。 ()list(*last)->next = newnode;

*last->next = newnode;と同じでメンバーがないため、間違って*(last->next) = newnode;listますnext

于 2013-05-30T16:28:23.433 に答える