数据结构 栈

     栈 是 数据结构中很重要的一个结构体,特点是 后进先出,由于栈的特点,所以在程序设计使用的频率很高。

 

     下面是我写的一个很简单的栈以及一些对栈的操作:

/*
 *File: stack.h
 *Author:hui
 *Created:2010-7-20
 *Modified:
 */

#define MAXSIZE 100

typedef struct _stack{
             char element[MAXSIZE];
             int top;
}stack;

 

stack*   create_stack();
int         destory(stack ** );
int         push_stack(stack* );
int         pop_stack(stack* );
int         empty_stack(stack* );
int         clear_stack(stack* );
int         print_stack(stack* );

 

 

/*

 *File:stack.c

 *Author:hui

 *Created:2010-7-20

 *Modified:

 *

 *          下面函数正常返回值都是1,若返回值为 -1 的话, 指向栈的指针为空,栈没

 *          有内存空间

 *

 */

 

 

#include <malloc.h>

#include <stdio.h>

#include <stdlib.h>

#include "stack.h"

 

 

/*创建栈,为栈分配内存空间*/

stack* create_stack()

{

    stack *p;

    int i;

   

    p = (stack*)malloc(sizeof(stack));

   

    if(p == NULL)  

    {

        printf("Error malloc!/n");

        exit(-1);

    }

   

    for(i = 0; i < MAXSIZE; i++)

        p->element[i] = '/0';

 

    p->top = 0;

   

    return p;

}

 

/*=====释放栈所占的内存空间=====*/

int destory_stack(stack **p)

{

    if(p == NULL)   return -1;

   

    free(*p);

    *p = NULL;

   

    return 0;

}

 

/*=============入栈==============*/

int push_stack(stack *p, char temp)

{

    if(p == NULL)   return -1;

   

    if(p->top == MAXSIZE-1) return -2;

 

    if(temp == '/0') return -3;

 

    p->element[p->top] = temp;

    p->top++;

 

    return 0;

}

 

/*============出栈==============*/

int pop_stack(stack *p)

{

    if(p == NULL)   return -1;

 

    if(p->top == 0) return -2;

 

    p->top--;

 

    return 0;

}

 

/*======判断栈是否为空======*/

int empty_stack(stack *p)

{

    if(p == NULL)   return -1;

 

    if(p->top == 0) return 0;

 

    return 1;

}

 

/*=====将栈清理为空=====*/

int clear_stack(stack *p)

{

    if(p == NULL)   return -1;

 

    p->top = 0;

 

    return 0;

}

 

/*=====打印栈里的内容======*/

int print_stack(stack *p)

{

    int i;

 

    if(p == NULL)   return -1;

 

    if(p->top == 0)

    {

        printf("The stack is empty!/n");

        return -2;

    }

   

    for(i = 0; i < p->top; i++)

    {

        putchar(p->element[i]);

    }

 

    putchar('/n');

 

    return 0;

}

 

 

       以上代码我只是写了个简单的主函数了,基本测试通过,健壮性可能不是很好,其中可能有些不足或错误,欢迎大家指出!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值