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


    #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

  • 相关阅读:
    解决mongod端口占用问题
    MongoDB操作
    ssh 带密码私钥 输入密码
    sequence
    使用plsql导入dmp文件缺少imp*.exe
    oracle查看锁表进程,杀掉锁表进程
    oracle
    常用shell命令
    ORA-03113: end-of-file on & ORA-07445
    ORA-39126: Worker unexpected fatal error in KUPW$WORKER.PUT_DDLS
  • 原文地址:https://www.cnblogs.com/logo-88/p/9649216.html
Copyright © 2020-2023  润新知