📄 cc.cpp
字号:
#include<stdio.h>
#include<stdlib.h>
#define stack_size 100
#define stackincrement 10
#define OVERFLOW -1
typedef char elemtype;
typedef struct
{
elemtype *top;
elemtype *m;
elemtype *base;
int stacksize;
}sqstack;
void initstack(sqstack &s)//构造一个空栈s
{
s.base=(elemtype *)malloc(stack_size*sizeof(elemtype));
if(!s.base)
exit(OVERFLOW);//存储分配失败
s.top =s.base;
s.stacksize=stack_size;
}
void destroystack(sqstack &s)
{
free(s.base);}
void clearstack(sqstack &s)
{
s.top =s.base;
}
int stackempty(sqstack &s)
{
if(s.base==s.top)
return 1;
return 0;
}
int stacklength(sqstack s)
{
return s.top-s.base;
}
elemtype gettop(sqstack s,elemtype &e)
{
if(s.top==s.base )
return 0;
e=*(s.top-1);
return 1;
}
void push(sqstack &s,elemtype e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(elemtype *)realloc(s.base,(s.stacksize+stackincrement)*sizeof(elemtype));
if(!s.base)
exit(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=stackincrement;
}
*s.top++=e;
}
elemtype pop(sqstack &s)
{elemtype f;
if(s.top ==s.base )
return 0;
f=*(s.top-1);
s.top--;
return f;
}
void dispstack(sqstack &s)
{
int i;
s.m=s.top;
for(i=0;i<stack_size;i++)
{
printf("%c",*(s.top-1));
--s.top;
if(s.top==s.base)
break;
}
s.top=s.m;
}
void creatstack(sqstack &s)
{ elemtype m;
int i;
for(i=1;i<=stack_size;i++)
{
scanf("%c",&m);
if(m=='q')
break;
push(s,m);
}
}
void main()
{
sqstack s;
printf("(1)初始化栈s\n");
initstack(s);
printf("(2)此时栈为%s\n",(stackempty(s)?"空":"非空"));
printf("(3)依次压栈a,b,c,d,e\n");
push(s,'a');
push(s,'b');
push(s,'c');
push(s,'d');
push(s,'e');
printf("(4)此时栈为%s\n",(stackempty(s)?"空":"非空"));
printf("(5)此时栈为\n");
dispstack(s);
printf("\n");
printf("(6)此时栈长度为%d\n",stacklength(s));
printf("(7)现在依次删除栈顶元素,并显示其顺序\n");
while (! stackempty(s))
{
printf("%c",pop(s));
}
printf("\n");
printf("(8)此时栈为%s\n",(stackempty(s)?"空":"非空"));
printf("(9)请输入您需要压栈的元素");
printf("\n");
creatstack(s);
printf("(10)此时栈为:");
dispstack(s);
printf("\n");
printf("(11)最后释放栈");
clearstack(s);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -