⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cc.cpp

📁 用C++编的关于栈的应用
💻 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 + -