链式结构-c语言实现
栈的相关操作
typedef struct StackNode{ //栈的结构体
char date;
struct StackNode *next;
}StackNode,*StackList;
//以下栈都带头结点
/*
void InitStackList(StackNode *S){
S=(StackNode *)malloc(sizeof(StackNode));
S->next=NULL;
}
//此初始方法运行后有问题,自己认为是当声明完StackNode *S后,
需立即对其初始化,不能当参数运行其他方法,如果不对希望有人可以指点一下:)
*/
StackNode *InitStackList(){ //返回一个StackNode *类型的指针,且开辟好地址
StackNode *S;
S=(StackNode *)malloc(sizeof(StackNode));
S->next=NULL;
return S;
}
void Pop(StackNode *S,char &ch){ //这里需要对ch进行&,以便将结点元素可以赋给指定变量
if(S->next==NULL)
exit (-1);
StackNode *s;
s=InitStackList();
s=S->next;
ch=s->date;
S->next=s->next;
free(s);
}
void Push(StackNode *S,char ch){
StackNode *s;
s=InitStackList();
s->date=ch;
s->next=S->next;
S->next=s;
}
bool IsEmpty(StackNode *S){
if(S->next==NULL)
return true;
else return false;
}