数据结构栈的程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);