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

#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

原文地址:https://www.cnblogs.com/logo-88/p/9649216.html