スタックチェーンテーブルの統合
2972 ワード
<span style="background-color: rgb(204, 204, 204);">#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
#include<assert.h>
typedef struct Stack
{
int nValue;
struct Stack *pNext;
}Stack, *PStack; // , , , , ,
PStack CreateStack()
{
PStack pStack = (PStack)malloc(sizeof(Stack));
pStack->nValue = 0;
pStack->pNext = NULL;
return pStack;
} // , , ,value pNext,pNext
// NULL,
bool IsEmpty(PStack pStack)
{
if(NULL == pStack)
{
printf(" !
");
}
return pStack->pNext == NULL; // , NULL,
}
PStack PushStack(PStack pStack, int nValue)
{
if(NULL == pStack)
{
printf(" !
");
return NULL;
} // ,,
PStack pTmp = (PStack)malloc(sizeof(Stack)); // , value pNext
pTmp->nValue = nValue; // , , pNext
pTmp->pNext = pStack->pNext;
pStack->pNext = pTmp; //
return pStack;
}
// PStack *pStack;
int PopStack(PStack pStack)
{
if(NULL == pStack)
{
printf(" !
");
}
PStack pTmp = pStack->pNext; // , , ,
pStack->pNext = pTmp->pNext; // , ,
int nValue = pTmp->nValue;
free(pTmp); //
return nValue;
}
void Destroy(PStack pStack)
{
while (!IsEmpty(pStack))
{
PopStack(pStack);
}
free(pStack);
pStack = NULL; // ,
}
int main()
{
PStack pStack = CreateStack(); // head value pNext
for (int i = 0; i < 10; i++)
{
pStack = PushStack(pStack, i);
} // , ,
while (!IsEmpty(pStack))
{
printf("%d ", PopStack(pStack)); //
}
Destroy(pStack);
system("pause");
return 0;
}</span>