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

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

#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\n",*(--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\n",getTop(p));
		printf("请输入要插入到栈顶的元素:");
		int u;
		scanf("%d",&u); 
		insertTop(p,u); 
		printf("栈里面元素如下排列:");
		printf("\n");
		print_1(p); 
		
	}

} 

运行结果如下:

posted on 2016-04-10 12:01 Magic_chao 阅读(...) 评论(...) 编辑 收藏

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值