c中栈的建立spa
栈(stack)又名堆栈,它是一种运算受限的线性表。code
其限制是仅容许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另外一端称为栈底。向一个栈插入新元素又称做进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称做出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。orm
c语言源码的实现了栈的一些基本操做,包括了建立空栈。游戏
#include <stdio.h> #include <stdlib.h> #define Max 100 typedef char T; typedef struct MyStack { T aa[Max]; unsigned int p; } stack; //建立空栈 stack* createEmptyStack() { stack* st = (stack *)malloc(sizeof(stack)); int i=0; for(i=0;i<Max;i++) st->aa[i]=0; st->p=0; return st; }; //栈判空 int isEmpty(const stack* st) { if(st->p==0) return 1; else return 0; }; //求栈的大小 unsigned int size(const stack* st) { return st->p; }; //push操做 void push(stack* st,const T a) { st->p=st->p+1; if(st->p==Max) { printf("栈满\n"); st->p--; return; } st->aa[st->p]=a; }; //pop操做 T pop(stack* st) { if(isEmpty(st)) { printf("栈空"); return NULL; } char t=st->aa[st->p]; st->p=st->p-1; printf("%c ",t); return t; }; //栈销毁 void destroy(stack* st) { free(st); }; int main() { stack* st = createEmptyStack(); if(isEmpty(st)) printf("MyStack is empty\n"); else printf("MyStack is not empty\n"); push(st,'a'); push(st,'b'); push(st,'c'); push(st,'d'); push(st,'e'); printf("%d\n",size(st)); while(!isEmpty(st)) pop(st); destroy(st); system("pause"); return 0; }
栈的应用:源码
1.数置转换,10转2,转8;it
2.括号匹配io
3.回文游戏im
建立字符nimargin