Cでスタックを実装しようとしましたが、非常に奇妙なエラーが発生します。何らかの理由で私のプッシュ機能が動作しません。..Cスタックプッシュ機能
typedef struct node
{
int v;
struct node* next;
}Node;
void push(Node *stack,int val)
{
Node *p = (Node *)calloc(1,sizeof(Node));
p->v = val;
Node *aux = stack;
if(aux == NULL)
{
stack = p;
return;
}
while(aux->next != NULL)
aux = aux->next;
aux->next = p;
}
を私はNULL
Node *stack = NULL;
と私のスタックを初期化し、私はこの
push(stack,value)
L。E.のような関数の何かを呼び出します パラメータdouble pointerを使ってpop関数を作成しようとしましたが、結果はpushと同じです。
void pop(Node **l)
{
if((*l) == NULL)
return;
else
{
Node *aux,*prev;
prev = *l;
aux = prev->next;
if(aux == NULL)
{
free(prev->v);
free(prev);
return;
}
while(aux != NULL)
{
prev = aux;
aux = aux->next;
}
prev->next = NULL;
free(aux->v);
free(aux);
}
}
ですが?実装できる機能を示し実証プログラムであり、それはコンパイルかランタイムエラーですか?あなたの質問を編集し、エラーメッセージを含めてください。 – anatolyg
あなたのスタックはスコープ内で変更されないローカル変数です –
@Costi Ivan私はプッシュとポップがどのようにスタックを探すべきか私の答えで既に示しました。 –