2016-11-17 6 views
-1

スタックの1つの要素から次の要素にポインタを移動しようとしています。私は実装を完了しました。スタックの最後の要素が与えられますが、それ以外の場合は何も動作しないようです。Cで2つの構造体を使用して実装されたスタックにデータを追加する:ポインタを移動する

void push(TopStack *ts, int val) 
{ 
    if(ts->num==0) 
    { 
     Stack *pNewNode; 
     pNewNode=(Stack*)malloc(sizeof(Stack)); 
     pNewNode->val=val; 
     pNewNode->next=NULL; 
     ts->top=pNewNode; 
    } 
    else if(ts->num!=0) 
    { 
     Stack *pNewNode; 
     pNewNode=(Stack*)malloc(sizeof(Stack)); 
     pNewNode->val=val; 
     pNewNode->next=next; 
     ts->top=pNewNode; 
    } 
} 

構造体は、ここで定義されています:コンパイラはpNewNode->next=next

関連するコードは以下である行にエラーnext undeclared (first use of this function)を与える

typedef struct stack_elem 
{ 
    int val; 
    struct stack_elem *next; 
} Stack; 

//struct that contains the pointer to the top of the stack 

typedef struct 
{ 
    int num; //num of elements in stack 
    Stack *top;; //top of stack 
} TopStack; 

私も以下の機能に関連するプロトタイプを持っています、構造体がヘッダファイルにあるためです。読書を容易にするため、私は関連コードであると思っているものだけを含めましたが、必要に応じてもっと多くの情報を提供することができます。

+2

'pNewNode-> next = next;' 'next'は定義されていません。 –

+0

問題はなんですか?それはコンパイルして何もしないか、コンパイルエラーがありますか? – user3794667384

+0

スタックの*** top ***に新しいノードを追加する場合、新しいノードの 'next'ポインタはどこに向いていますか? –

答えて

0

他の部分でコードを修正してください。pNewNode-> next = ts-> top;

void push(TopStack *ts, int val) 
{ 
    if(ts->num==0) 
    { 
     Stack *pNewNode; 
     pNewNode=(Stack*)malloc(sizeof(Stack)); 
     pNewNode->val=val; 
     pNewNode->next=NULL; 
     ts->top=pNewNode; 
    } 
    else if(ts->num!=0) 
    { 
     Stack *pNewNode; 
     pNewNode=(Stack*)malloc(sizeof(Stack)); 
     pNewNode->val=val; 
     pNewNode->next=ts->top; 
     ts->top=pNewNode; 
    } 
} 
関連する問題