抽象数据类型ADT之栈的构建

来源:互联网 发布:找出两列中不同的数据 编辑:程序博客网 时间:2024/06/05 19:15
#include <stdio.h>#include <stdlib.h>#include <string.h>#define  initsize 100 //设置初始分配内存#define  add      10   //设置分配增量typedef char elemtype; typedef int status;typedef struct{    elemtype *base;    elemtype *top; //注意 : top表示栈顶元素的下一个元素    int stacksize;} sqstack;void initstack(sqstack &s)//构建栈操作{    s.base = (elemtype *) malloc((initsize)* sizeof(elemtype));    s.top=s.base;    s.stacksize = initsize;}void  push(sqstack &s, elemtype e){    if(s.top - s.base >= s.stacksize) //当前分配空间不够的情况    {        s.base = (elemtype *) realloc(s.base, (initsize  + add) * sizeof(elemtype));        s.top = s.base + s.stacksize;        s.stacksize +=add;    }    *s.top++ =e; // top地址自身加加之后存储数值}status pop (sqstack &s){    if(s.base == s. top) return 0;    else    {        s.top--;        return *s.top;    }}char gettop(sqstack &s){    if(s.base == s.top) return false;    else        return *(s.top-1);}status isempty(sqstack &s){    if(s.base ==s.top ) return 1;    else return 0;}int main(){   return 0;}

原创粉丝点击