栈的链式存储,形参部分有些不明白
程序代码:
#include<stdlib.h> #include<iostream.h> #include<malloc.h> typedef char ElemType; typedef struct lsnode { ElemType data; /* 存储结点数据 */ struct lsnode *next; /* 指针域 */ }LinkStack; void InitStack(LinkStack *&ls) { ls=NULL; } void Push(LinkStack *&ls,ElemType x) { LinkStack *p; p=(LinkStack *)malloc(sizeof(LinkStack)); p->data=x; p->next=ls; ls=p; } int Pop(LinkStack *&ls,ElemType &x) { LinkStack *p; if(ls==NULL) return 0; else { p=ls; x=p->data; ls=p->next; free(p); return 1; } } int GetTop(LinkStack *ls,ElemType &x) { if(ls==NULL) return 0; else { x=ls->data; return 1; } } int StackEmpty(LinkStack *ls) { if(ls==NULL) return 1; else return 0; } void main() { LinkStack *ls; ElemType e; InitStack(ls); cout<<" 栈"; if(StackEmpty(ls)==1) cout<<" 空"<<endl; else cout<<" 不空"<<endl; cout<<" a进栈"<<endl;Push(ls,'a'); cout<<" b进栈"<<endl;Push(ls,'b'); cout<<" c进栈"<<endl;Push(ls,'c'); cout<<" d进栈"<<endl;Push(ls,'d'); cout<<" 栈"; if(StackEmpty(ls)==1) cout<<" 空"<<endl; else cout<<" 不空"<<endl; GetTop(ls,e); cout<<" 栈顶元素"<<e<<endl; cout<<" 出栈次序:"; while(!StackEmpty(ls)) { Pop(ls,e); cout<<e; } cout<<'\n'; }
关于形参部分,有些不明白的就是,为什么LinkStack后的形参是 *&ls呢?这样是表示ls所指向的next吗?刚刚看了指针部分看了半天,还是晕晕乎乎的