• 数据结构--栈的基本操作


    #include<stdio.h>          //栈的顺序存储 
    #include<stdlib.h>
    #define stack_int_size 100
    #define stack_increment 10
    typedef struct 
    {
    	int *top;
    	int *base;
    	int sqlist;           //栈的当前大小 
    }Stack;
    void init(Stack *p)      //初始化栈 
    {
    	p->base=(int *)malloc(stack_int_size*sizeof(int));
    	if(!p->base) exit(-1);
    	p->top=p->base;
    	p->sqlist=stack_int_size;
    }
    int getTop(Stack *p)           //栈非空,返回栈顶元素 
    {
    	if(p->top==p->base) return 0;
    	else return *(p->top-1); 
    }
    
    int insertTop(Stack *p,int m)         //插入元素m到栈顶 
    {
    	if(p->top-p->base>=p->sqlist)        //栈满 
    	{
    		p->base=(int *)realloc(p->base,(stack_increment+stack_int_size)*sizeof(int));
    		if(!p->base) exit(-1);       //分配失败
    		p->top=p->base+p->sqlist;
    		p->sqlist+=stack_increment; 
    	}
    	*(p->top++)=m;
    	
    }
    void scanf_1(Stack *p,int n)          
    {
    	int i;
    	for(i=0;i<n;i++)
    	{
    		scanf("%d",p->top);
    		p->top++;
    	}
    	
    }
    void print_1(Stack *p)
    {
    	
    	int i;
    	for(i=0;p->top!=p->base;i++)
    	printf("%d
    ",*(--p->top)); 
    
    
    }
    int main()
    {
    	int n;
    	while(scanf("%d",&n)!=EOF)
    	{
    		Stack m,*p;
    		p=&m;
    		init(p); 
    		scanf_1(p,n);
    		printf("输出栈顶元素:");
    		printf("%d
    ",getTop(p));
    		printf("请输入要插入到栈顶的元素:");
    		int u;
    		scanf("%d",&u); 
    		insertTop(p,u); 
    		printf("栈里面元素如下排列:");
    		printf("
    ");
    		print_1(p); 
    		
    	}
    
    } 

    运行结果如下:

    非学无以广才,非志无以成学! 【Magic_chao

  • 相关阅读:
    DBSCAN密度聚类
    特征工程之特征预处理
    特征工程之特征表达
    特征工程之特征选择
    Adaboost,GBDT和XGboost算法
    036 Go操作NSQ
    035 Go操作Redis
    034 Go操作MySQL
    033 protobuf初识
    032 二进制协议gob及msgpack介绍
  • 原文地址:https://www.cnblogs.com/logo-88/p/9649216.html
Copyright © 2020-2023  润新知