#include<stdio.h>
#include<stdlib.h>
/*链栈的定义(不含头结点)*/
typedef struct LinkNode{
int data;
struct LinkNode *next;
}*ListStack; //栈类型定义
/*初始化*/
bool InitStack(ListStack &S){
S = NULL; //空表,防止脏数据
return true;
}
/*判空*/
bool StackEmpty(ListStack &S){
if(S == NULL)
return true;
else
return false;
}
/*入栈(头插法)*/
bool Push(ListStack &p, int x){
LinkNode *pnew = (LinkNode *)malloc(sizeof(LinkNode));
if(pnew == NULL) //内存分配失败
return false;
pnew->data = x;
pnew->next = p;
p=pnew;
return true;
}
/*出栈*/
bool Pop(ListStack &p, int &x){
if(p == NULL)
return false;
x = p->data;
p = p->next;
return true;
}
/*读取栈顶元素*/
bool GetTop_Stack(ListStack &S, int &x){
if(S == NULL){
printf("Stack_top:%d\n");
return false;
}
x = S->data;
printf("Stack_top:%d\n",x);
return true;
}
int main(){
int ret;
ListStack S;
InitStack(S);
StackEmpty(S);
Push(S,2);
Push(S,9);
GetTop_Stack(S,ret);
Pop(S,ret);
GetTop_Stack(S,ret);
return 0;
}
链栈的实现(详细注释)
最新推荐文章于 2022-07-30 14:46:49 发布