0

スタックを実装しようとしています。次のスタック構造があります。

struct stackNode 
{
  char data;
  struct stackNode *nextPtr;
};

typedef struct stackNode StackNode; 
typedef StackNode *StackNodePtr;

pop メソッドでこれを使用しようとすると、多くのエラー メッセージが表示されます。私のポップ方法は次のとおりです。

char pop(StackNodePtr *topPtr )
{       
  if (IsEmpty(topPtr)) 
  {
    printf("Can't pop element from stack: stack is empty.\n");
    return 'n'; // arbitrary char to end if, will adjust this later.
  }
  char c = topPtr->data; //save data to be returned

  // temporary StructNodePtr to save data
  StackNodePtr temp; // temporary StackNodePtr
  temp = malloc(sizeof(StackNodePtr));
  temp->data = topPtr->data;    //line 52, first error
  temp->nextPtr = topPtr->nextPtr;

  //replace values in topPtr, this section I have yet to debug, is likely faulty.
  topPtr->data = temp->nextPtr->data;   //line 56, third error
  topPtr->nextPtr = temp->nextPtr; 

  free(temp);      
  return (c);
}

次のエラー メッセージが表示されます。

52:22: error: request for member ‘data’ in something not a structure or union
53:25: error: request for member ‘nextPtr’ in something not a structure or union
56:10: error: request for member ‘data’ in something not a structure or union
57:10: error: request for member ‘nextPtr’ in something not a structure or union

temp を StackNode にすると (それに応じて -> に調整すると)、エラーが発生します"request for member ‘nextPtr’ or ’data’ in something not a structure or union"。私に与えられた質問でtopPtrは、私はStackNodePtr.

誰かがこれのトラブルシューティングを手伝ってくれますか?

4

1 に答える 1