学习笔记
一、基本操作
1.初始化
//链栈的存储结构
typedef struct StackNode{
int data;
struct StackNode *next;
}StackNode,*LinkStack;
//初始化
void InitStack(LinkStack &S){
S = NULL;
}
2.入栈
//入栈
void PushStack(LinkStack &S,int e){
StackNode *p = (StackNode *)malloc(sizeof(StackNode));
p->data = e;
p->next = S;
S = p;
}
3.出栈
//出栈
bool PopStack(LinkStack &S){
if (S==NULL) return false;
int e;
e = S->data;
StackNode *p = (StackNode *)malloc(sizeof(StackNode));
p = S;
S = S->next;
delete p;
return true;
}
4.取栈顶元素
//取栈顶元素
int GetTop(LinkStack S){
if(S != NULL) return S->data;
}
二、尝试代码
#include<stdio.h>
#include<stdlib.h>
//链栈的存储结构
typedef struct StackNode{
int data;
struct StackNode *next;
}StackNode,*LinkStack;
//初始化
void InitStack(LinkStack &S){
S = NULL;
}
//入栈
void PushStack(LinkStack &S,int e){
StackNode *p = (StackNode *)malloc(sizeof(StackNode));
p->data = e;
p->next = S;
S = p;
}
//出栈
bool PopStack(LinkStack &S){
if (S==NULL) return false;
int e;
e = S->data;
printf("此时出栈的为:%d\n",e);
StackNode *p = (StackNode *)malloc(sizeof(StackNode));
p = S;
S = S->next;
delete p;
return true;
}
//取栈顶元素
int GetTop(LinkStack S){
if(S != NULL) return S->data;
}
int main(){
LinkStack S;
InitStack(S);
int x;
scanf("%d",&x);
while(x != 9999){
printf("此时入栈的是: %d\n",x);
PushStack(S,x);
scanf("%d",&x);
}
int va_top;
va_top = GetTop(S);
printf("此时栈顶的元素为: %d\n",va_top);
while(S != NULL) PopStack(S);
va_top = GetTop(S);
printf("此时栈顶的元素为: %d\n",va_top);
return 0;
}