창고 체인 테이블 의 실현

2909 단어
링크 는 데이터 구조 로 선형 순서에 따라 배열 되 고 모든 대상 은 하나의 키워드 와 지침 이 있다.
스 택 의 링크 를 정의 합 니 다.
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;
}

스 택 링크 가 비어 있 는 지 확인 하 는 것 은 대상 이 데 이 터 를 저장 하 는 지 아 닌 지 를 보 는 것 입 니 다.
bool IsEmpty(PStack pStack)
{
	if(NULL == pStack)
	{
		printf("      !
"); } return pStack->pNext == NULL; }

그리고 스 택 링크 에 데 이 터 를 누 르 십시오:
PStack PushStack(PStack pStack, int nValue)
{
	if(NULL == pStack)
	{
		printf("      !
"); return NULL; } PStack pTmp = (PStack)malloc(sizeof(Stack)); pTmp->nValue = nValue; pTmp->pNext = pStack->pNext; pStack->pNext = pTmp; return 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; }
전체 코드:
#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;
}

bool IsEmpty(PStack pStack)
{
	if(NULL == pStack)
	{
		printf("      !
"); } return pStack->pNext == NULL; } PStack PushStack(PStack pStack, int nValue) { if(NULL == pStack) { printf(" !
"); return NULL; } PStack pTmp = (PStack)malloc(sizeof(Stack)); pTmp->nValue = nValue; 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(); for (int i = 0; i < 10; i++) { pStack = PushStack(pStack, i); } while (!IsEmpty(pStack)) { printf("%d ", PopStack(pStack)); } Destroy(pStack); system("pause"); return 0; }

좋은 웹페이지 즐겨찾기