刚学数据结构,写了个C语言栈的头文件方便新手一块用~

来源:互联网 发布:灰帽seo 编辑:程序博客网 时间:2024/04/28 10:12
<span style="font-family: Arial, Helvetica, sans-serif;">基于CSDN一位大牛的头文件结构写出来的。本人新手,可能有Bug。</span>

/*数据类型定义*/#define Stack_size 25#include <stdio.h>#include <stdlib.h>typedef struct{int data[Stack_size] ;int top;} Stack ;/*接口函数声明*//*操作:初始化一个栈*//*操作前:pstack 指向一个栈*//*操作后:如果内存分配成功, 该栈被初始化并被置为空, 返回1; 否则返回0*//*时间复杂度:O(1)*/int InitStack (Stack ** pstack){    *pstack=NULL;    *pstack=(Stack *)malloc(sizeof(Stack));    if(*pstack==NULL)        {            return 0;        }    (*pstack)->top=-1;    return 1;}/*操作:确定一个栈是否为空*//*操作前:pstack 指向一个已初始化的栈*//*操作后:如果栈为空, 返回1; 否则返回0*//*时间复杂度:O(1)*/int IsEmpty (Stack * pstack){    if(pstack->top == -1)        return 1;    else        return 0;}/*操作:将一个元素入栈*//*操作前:pstack 指向一个已初始化的栈, panme 指向入栈的元素的数据*//*操作后:如果内存分配成功, 元素数据域为 *pname 的元素入栈, 返回1; 否则返回0*//*时间复杂度:O(1)*/int Push (Stack * pstack, int num){    if(pstack->top>Stack_size)    {        printf("Push Error!");        return 0;    }    pstack->top++;    pstack->data[pstack->top]=num;    return 0;}/*操作:从栈中弹出一个元素*//*操作前:pstack 指向一个已初始化的栈, pname 指向一个元素数据域的数据*//*操作后:如果栈不为空, 栈顶元素出栈并且 *panme 被赋值, 返回1; 否则返回0*//*时间复杂度:O(1)*/int Pop (Stack * pstack, int * pname){    if(pstack->top<0)    {        return 0;    }    * pname = pstack->data[pstack->top];    pstack->top--;    return 1;}


用以下代码调试通过:

#include <stdio.h>#include <stdlib.h>#include "stack.h"int main(){    Stack *ss;    if(InitStack(&ss))        printf("Initialized OK!\n");    if(IsEmpty(ss))        printf("True!\n");    int e=1234;    Push(ss,e);    Pop(ss,&e);    printf("%d",e);    return 0;}


0 0
原创粉丝点击