栈的链式存储
如图,和线性表的链式存储十分类似
#include<stdio.h> #include<malloc.h> typedef struct node{ int data; struct node *next; }StackNode,*LinkStack; LinkStack Init_Stack() { LinkStack ls=NULL; return ls; } int Empty_LinkStack(LinkStack p) { if(p==NULL) return 0; else return 1; } void push(LinkStack *ls,int *x) { LinkStack p=(LinkStack)malloc(sizeof(StackNode)); p->data=*x; p->next=*ls; *ls=p; } int pop(LinkStack *ls,int *y) { LinkStack p; if(Empty_LinkStack(*ls)) { p=*ls; *y=p->data; *ls=(*ls)->next; p->next=NULL; free(p); return *y; } else return 0; } void print(LinkStack ls) { LinkStack p=ls; printf("输出栈中的元素:\n"); while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n"); } void main() { LinkStack ls=Init_Stack(); int n,i,x,y; printf("请输入可能要入栈的个数:"); scanf("%d",&n); printf("请输入一组要入栈的数据:\n"); for(i=0;i<n;i++) { scanf("%d",&x); push(&ls,&x); } print(ls); printf("弹出栈顶的元素是:%d\n",pop(&ls,&y)); print(ls); }
如图
很希望自己是一棵树,守静、向光、安然,敏感的神经末梢,触着流云和微风,窃窃的欢喜。脚下踩着最卑贱的泥,很踏实。还有,每一天都在隐秘成长。