スタックチェーンテーブルの統合

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>