分享

queue stack

 海漩涡 2016-07-24
#ifndef _SUQUENCE_STACK_H_
#define _SUQUENCE_STACK_H_

#include <stdio.h>
#include <stdlib.h>

#define SUQUENCE_MAX_NUM 100   // 栈中最大元素

typedef int ElemType;

typedef struct{
    //Elemtype data[MAXSIZE]; // 存放栈中元素
    ElemType *data; // 存放栈中元素
    int top;                // 栈顶指针
}SqStack;

/* 初始化栈 */
int InitStack(SqStack *s);

/* 判断栈是否为空 */
int IsEmpty(SqStack *s);

/* 判断栈是否为空 */
int IsFull(SqStack *s);

/* 入栈 */
int Push(SqStack *s, ElemType *E);

/* 出栈 */
int Pop(SqStack *s, ElemType *E);

/* 获得栈顶元素 */
int GetTop(SqStack *s, ElemType *E);

/* 销毁栈,释放栈所占空间 */
int ClearStack(SqStack *s);

#endif

==================================================================


#include "stack.h"


/* 初始化栈 */
int InitStack(SqStack *s)
{
    s->top = 0;   // 初始化栈顶
    s->data = (ElemType *)malloc(SUQUENCE_MAX_NUM*sizeof(ElemType));
    return (NULL != s->data);
}

/* 判断栈是否为空 */
int IsEmpty(SqStack *s)
{
    return (0 == s->top);
}

/* 判断栈是否为空 */
int IsFull(SqStack *s)
{
    return (SUQUENCE_MAX_NUM == s->top);
}


/* 入栈 */
int Push(SqStack *s, ElemType *E)
{
    if(IsFull(s))
    {
        return -1;
    }

    s->data[s->top++] = *E;
    return 0;
}

/* 出栈 */
int Pop(SqStack *s, ElemType *E)
{
    if(IsEmpty(s))
    {
        return -1;
    }

    *E = s->data[--s->top];
    return 0;
}

/* 获得栈顶元素 */
int GetTop(SqStack *s, ElemType *E)
{
    if(IsEmpty(s))
    {
        return -1;
    }

    *E = s->data[s->top - 1];
    return 0;
}


/* 销毁栈,释放栈所占空间 */
int ClearStack(SqStack *s)
{
    if(NULL == s)
    {
        return -1;
    }
    s->top = 0;
    free(s);
    return 0; 
}


==================================================================

// main.c
#include "stack.h"

int main()
{
    SqStack s;
    ElemType E = 100;
    
    InitStack(&s);

    Push(&s, &E);

    E = 200;
    Push(&s, &E);

    E = 300;
    Push(&s, &E);

    while(!IsEmpty(&s))
    {
        Pop(&s, &E);
        printf("TTT----Pop--elem[%d]\n",E);
    }
    
    return 0;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约