창고 의 체인 식 실현

1917 단어 데이터 구조
스 택: 선진 후 체인 스 택: 스 택 이 가득 찬 상황 을 만 나 지 않 습 니 다. 주로 스 택 의 스 택 (Push) 과 스 택 (Pop) 작업 을 파악 합 니 다.
코드:
/*
    Name: Link_Stack
    Author: Bryant_xw
    Date: 2018-09-27-11.22.07
*/
#include
using namespace std;

typedef struct Node
{
    int n;
    struct Node* next;
}StackNode;

typedef struct m_stack
{
    int nCount;
    StackNode* pTop;
}Stack;

void init(Stack** st)
{
    *st = (Stack*)malloc(sizeof(Stack));
    (*st)->nCount = 0;
    (*st)->pTop = NULL;
}

void Push(Stack* st, int num)
{
    if(st == NULL)
        return ;
    StackNode* temp = (StackNode*)malloc(sizeof(StackNode));
    temp->n = num;
    temp->next = st->pTop;
    st->pTop = temp;
    st->nCount++;
}

int Pop(Stack* st)
{
    if(st == NULL ||st->pTop == NULL)
        return -1;
    int res;
    StackNode *pDel = NULL;
    pDel = st->pTop;
    st->pTop = st->pTop->next;
    res = pDel->n;
    free(pDel);
    st->nCount--;
    return res;
}

bool IsEmpty(Stack* st)
{
    if(st->nCount == 0)
        return true;
    return false;
}

int GetStackTop(Stack* st)
{
    if(st == NULL)
        return -1;
    return st->pTop->n;
}

void Clear(Stack* st)
{
	if(st == NULL)
		return ;
	while(st->nCount != 0)
	{
		Pop(st);
	}
}

void Destory(Stack** st)
{
    Clear(*st);
    free(*st);
    *st = NULL;
}

int main(){
    Stack* st = NULL;
    init(&st);
    if(IsEmpty(st))
        printf("Stack is empty!
"); for(int i = 0; i < 5; ++i) Push(st,i+2); printf("Stack size is:%d
",st->nCount); printf("top's num is %d
",GetStackTop(st)); printf("Stack contains: "); for(int i = 0; i < 5; ++i){ if(i != 4) printf("%d ",Pop(st)); else printf("%d",Pop(st)); } puts(""); return 0; }

좋은 웹페이지 즐겨찾기