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

来源:互联网 发布:阿铭linux 编辑:程序博客网 时间:2024/06/06 05:56
#include<stdio.h>          //栈的顺序存储 #include<stdlib.h>#define stack_int_size 100#define stack_increment 10typedef 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); }} 

运行结果如下:

0 0
原创粉丝点击