typedef int Element;
typedef struct {
Element *stack;
int max_size;
int top;
} Stack;
//I added more codes..
Stack *CreateStack(int size)
{
Stack *pStack = (Stack *)malloc(sizeof(Stack));
if(pStack == NULL)
return NULL;
pStack->stack = (Element *)malloc(size * sizeof(Element));
if(pStack->stack == NULL){
free(pStack);
return NULL;
}
pStack->max_size = size;
pStack->top = -1;
return pStack;
}
//this for linked list
typedef struct tStackNode{
Element data;
struct tStackNode *next;
} StackNode;
typedef struct {
int count;
StackNode *top;
} StackHead;
StackHead* CreateStack(int size)
//size is not used in linked list implmentation
{
StackHead *pStack = (StackHead *) malloc(sizeof(StackHead));
if(pStack == NULL)
return NULL;
pStack->count = 0;
pStack->top = NULL;
return pStack;
}
最初のものは配列のもので、2番目のものはリンクされたリストのものです。スタックのC:配列実装とスタックのリンクリスト実装で、この2つのコードの違いがなぜ発生するのですか?
「スタックの作成」のコードを追加しました。でしょう最初のものは、整数ポインタ値を使用して2つ目は、int型の値を必要とするのはなぜ
....
どうもありがとうございました。
リストの各ノードは*単一*値を表します。したがって、ノードには1つの「要素」値しか含まれていないことが理にかなっています。スタックの場合、 'stack'は配列の最初の要素へのポインタです。 –
いくつかの情報がありません、より多くのコードを表示します。 –
これは実装が異なるためですか?最初の要素は動的に要素を割り当て、スタックの先頭にフックし、2番目の要素は動的にノードを割り当てます。 –