出栈 Stack Pop (SqStack &S,SElemType &e){ /若栈不空,则删除S的栈顶元素,用返回其值,并返回OK; I/否则返回ERROR if(S.top==S.base)return ERROR; e=*--S.top; return OK: //Pop
Stack Pop (SqStack &S,SElemType &e) { //若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK; //否则返回ERROR if (S.top==S.base) return ERROR; e=*--S.top; return OK; }//Pop 出栈
int pop(int s[l,int top,int *q) if(top-=0) printf("stack empty"); return(0): *q=s[--top]; return(top); } d
int pop(int s[],int top,int *q) { if(top==0) { printf("stack empty"); return(0); } *q=s[--top]; return(top); }
链栈 栈顶 栈底 top data link ●结点定义 typedef struct node int data; struct node *link; JD; ●入栈算法 toD top 栈底 p → ●出栈算法 top 栈底 top→ 。00w A
❖链栈 栈顶 top data link …... ^ 栈底 ⚫结点定义 ⚫入栈算法 ⚫出栈算法 typedef struct node { int data; struct node *link; }JD; …... ^ 栈底 top top x p top …... ^ 栈底 top q
入栈 JD *lzjz(JD *top,int x) JD*p; p=(JD *)malloc(sizeof(JD)): p->data-x; p->link-top; top-p; return(p);
JD *lzjz(JD *top,int x) { JD *p; p=(JD *)malloc(sizeof(JD)); p->data=x; p->link=top; top=p; return(p); } 入栈
出栈: JD *Iztz(JD *top,int *p) JD*q; if(top!=NULL) q=top; *p-top->data; top-top->link: free(q); return(top);
JD *lztz(JD *top,int *p) { JD *q; if(top!=NULL) { q=top; *p=top->data; top=top->link; free(q); } return(top); } 出栈: