• 顺序栈的建立及操作


    问题:建立顺序栈还是比较简单的。主要是一开始在入栈操作中每次调用初始化栈函数,结构出错。

    代码:

    #include <iostream>
    #include <cstdlib>
    using namespace std;
    #define MAXSIZE 20
    typedef struct SeqStack
    {
    	int stack [MAXSIZE];
    	int top;
    }*stackNode;
    
    void initStack(stackNode &stack)
    {
    	stack=(stackNode)malloc(sizeof(struct SeqStack));
        if(!stack)
    	{
    		cout<<"allocate fail"<<endl;
    		exit(EXIT_FAILURE);
    	}
    	else
    	{
    		stack->top=-1;
    	}
    }
    
    void pushStack(stackNode stack,int elem)
    {
    	 if(stack->top==MAXSIZE)
    	 {
    		 cout<<"stack is full"<<endl;
    		 exit(0);
    	 }
    	 else
    	 {
    		 stack->stack[++(stack->top)]=elem;
    	 }
    }
    
    int  popStack(stackNode stack)
    {
    	int elem;
    	if(stack->top==-1)
    	{
    		cout<<"栈已空"<<endl;
    		return -1;
    	}
    	elem=stack->stack[stack->top];
    	--stack->top;
    
    	return elem;
    }
    
    int topStack(stackNode stack)
    {
    	int top;
    	if(stack->top==-1)
    	{
    		cout<<"栈已空"<<endl;
    		return -1;
    	}
    	top=stack->stack[stack->top];
    
    	return top;
    }
    
    void showStack(stackNode stack)
    {
    	if(stack->top==-1)
    	{
    		cout<<"栈已空"<<endl;
    		exit(-1);
    	}
    	while(stack->top!=-1)
    	{
    		cout<<stack->stack[stack->top]<<"--";
    		--stack->top;
    	}
    	cout<<endl;
    }
    
    int main()
    {
    	stackNode stack=NULL;
    	int top;
    	int arr[]={1,3,5,6,7,2,9,8};
    	initStack(stack);
    	cout<<"入栈:"<<endl;
    	for(int i=0;i<8;i++)
    	{
    		pushStack(stack,arr[i]);
    	}
    
    	top=topStack(stack);
    	cout<<"top="<<top<<endl;
    
    	cout<<"出栈元素为"<<popStack(stack)<<endl;
        cout<<"出栈元素为"<<popStack(stack)<<endl;
    
    	cout<<"入栈:"<<endl;
    	pushStack(stack,16);
    	pushStack(stack,19);
    
    	top=topStack(stack);
    	cout<<"top="<<top<<endl;
    	cout<<"遍历栈中的元素:";
    	showStack(stack);
    	return 0;
    }
    

    运行截图:

  • 相关阅读:
    SpringBoot中mybatis配置自动转换驼峰标识没有生效
    mybatis-plus-扩展使用
    myabtis-plus使用
    mybatis-plus特性
    Mariadb Galera Cluster 故障快速拉起
    galera集群启动异常问题汇总
    Galera Cluster grastate.dat文件详解
    mongodb配置文件详解
    wsrep配置一览
    MySQL Galera cluster集群常用参数说明
  • 原文地址:https://www.cnblogs.com/xshang/p/3030874.html
Copyright © 2020-2023  润新知