数据结构栈的程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#define initsize 20

#define increment 10

typedef char elemtype;

typedef struct stack{

elemtype *base;

elemtype *top;

int stacksize;

}stack;

void initstack(stack &s)//初始化栈

{s.base=(elemtype *)malloc(initsize*sizeof(elemtype));

if(!s.base)

exit(0);

s.stacksize=initsize;

s.top = s.base;}

void push(stack &s,elemtype e)//入栈,栈满则追加栈空间

{if(s.top-s.base>=initsize)

s.base=(elemtype *)realloc(s.base,(s.stacksize+increment)*sizeof(elemtype)); if(!s.base)

exit(0);

s.stacksize+=increment;

*s.top=e;

s.top++;

}

void pop(stack &s,elemtype &e)//出栈

{if(s.base==s.top)

printf("有错误");

else

e=*--s.top;

}

int empty(stack &s)//判栈空

{if(s.base==s.top)

return 1;

else return 0;

}

void clear(stack &s)

{if(s.base==s.top)

return ;

s.base=s.top;

}

void conversion(int n,int N)//进制转换

{int c;

char e;

stack s;

initstack(s);

while(n!=0)

{c=n%N;

n=n/N;

if(c<10)

*s.top++='0'+c;

else

{*s.top++='A'+c-10;

}

}

while(!empty(s))

{pop(s,e);

printf("%c",e);

}

clear(s);

}

void main()

{

int n,N;

printf("请输入十进制数:");

scanf("%d",&n);

printf("请输入需要转化进制:"); scanf("%d",&N);

printf("转化后的数是:");

conversion(n,N);

}

#include

using namespace std;

#define STACK_INIT_SIZE 1000 #define STACKINCREMENT 100 typedef struct

{

int *base;

int *top;

int stacksize;

}SqStack;

SqStack S;

void InitStack (SqStack &S)

{

S.base = (int*)malloc (STACK_INIT_SIZE * sizeof(int));

if (!S.base) cout<<"OVERFLOW"<

S.top=S.base;

S.stacksize = STACK_INIT_SIZE;

} //初始化

void Push(SqStack &S,int e)

{

if (S.top-S.base>=S.stacksize)

{

S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT) *sizeof(int));

if (!S.base) cout<<"error"<

S.top = S.base +S.stacksize;

S.stacksize += STACKINCREMENT;

}

*S.top++ = e;

*S.top = e;

S.top = S.top+1;

} //入栈

void Pop(SqStack &S, int e)

{

if (S.top == S.base) cout<<"ERROR"<

e=*--S.top;

S.top= S.top-1;

e=*S.top;

cout<

} //出栈

int StackEmpty(SqStack &S)

{

if(S.base==S.top) return 1;

else return 0;

} //栈空定义

void conversion()

{

int N,e;

InitStack(S);

相关文档
最新文档