zoukankan      html  css  js  c++  java
  • 为了堆栈实现

    为了堆栈数据结构如下面:

    typedef struct
    {
    	ElemType data[MaxSize];    //栈数据 
    	int top;                  //栈顶指针
    }SqStack;

    实现下列函数:

    void InitStack(SqStack* &s);    //初始化栈
    void DestroyStack(SqStack* &s);  //销毁栈
    int StackLength(SqStack* s);  //求栈的长度
    int StackEmpty(SqStack* s);  //栈是否为空
    int Push(SqStack* &s,ElemType e);  //进栈
    int Pop(SqStack* &s,ElemType &e);   //出栈
    int GetTop(SqStack* s,ElemType &e); //取栈顶元素
    void DispStack(SqStack* s); //输出栈 

    详细实现代码:

    #include<stdio.h>
    #include<stdlib.h>
    #include<iostream>
    #define ElemType int
    #define MaxSize 1000
    #define GET_ARRAY_LENGTH(array)  (sizeof(array)/sizeof(array[0]))
    using namespace std; 
    
    typedef struct
    {
    	ElemType data[MaxSize];    //栈数据 
    	int top;                  //  
    }SqStack;
    
    void InitStack(SqStack* &s);    //初始化栈
    void DestroyStack(SqStack* &s);  //销毁栈
    int StackLength(SqStack* s);  //求栈的长度
    int StackEmpty(SqStack* s);  //栈是否为空
    int Push(SqStack* &s,ElemType e);  //进栈
    int Pop(SqStack* &s,ElemType &e);   //出栈
    int GetTop(SqStack* s,ElemType &e); //取栈顶元素
    void DispStack(SqStack* s); //输出栈 
    
    void InitStack(SqStack* &s){
    	s=(SqStack* )malloc(sizeof(SqStack));
    	s->top=-1;
    }
    
    
    void DestroySqStack(SqStack* &s){
    	free(s);
    }
    
    int StackLength(SqStack* s){
    	return (s->top+1);
    }
    
    int StackEmpty(SqStack* s){
    	return (s->top==-1);
    }
    
    void DispStack(SqStack* s){
    	for(int i=s->top;i>-1;i--)
    		cout<<s->data[i]<<" ";
    	cout<<endl; 
    }
    int Push(SqStack* &s,ElemType e){
    	if(s->top+1==MaxSize)return -1;
    	else{
    		s->data[s->top+1]=e;
    		s->top++;
    		return 1;
    	}
    }
    
    int Pop(SqStack* &s,ElemType &e){
    	if(s->top==-1)return -1;
    	else{
    		e=s->data[s->top];
    		s->top--;
    		return 1;
    	}
    } 
    
    int GetTop(SqStack* s,ElemType &e){
    	if(s->top==-1)return -1;
    	else {
    		e=s->data[s->top];
    		return 1;
    	}
    }
    
    
    int main(){
    	int i=0;
    	ElemType e; 
    	SqStack* s=NULL;
    	ElemType a[]={3,76,4,25,7,8,2,43,212};
    	InitStack(s);
    	for(int i=0;i<GET_ARRAY_LENGTH(a);i++){
    		Push(s,a[i]);
    		DispStack(s);
    	}
    	GetTop(s,e);
    	cout<<e<<" "<<StackLength(s)<<" "<<endl;
    	for(int i=0;i<GET_ARRAY_LENGTH(a);i++){
    		Pop(s,a[i]);
    		DispStack(s);
    	}	
    	return 0;
    } 
    
     

    代码执行 结果例如以下:



  • 相关阅读:
    快速生成移动设备应用图标的在线工具 makeappicon
    绝对令人的惊叹的CSS3折叠效果
    GBin1专题之Web热点秀#14
    对一个正整数n,求出n!中末尾0的个数。
    大整数加法
    HDOJ2013
    HDOJ1203 I NEED A OFFER!
    HDOJ1005【苏哥的解法】
    HDOJ1297
    HDOJ1004
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4589214.html
Copyright © 2011-2022 走看看