栈的链式存储,形参部分有些不明白
程序代码:#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吗?刚刚看了指针部分看了半天,还是晕晕乎乎的






