动态栈是用链表实现的,优点是栈的内存充足。
结构代码
/节点
typedef struct Node{
int data;
struct Node *pNext;
}NODE,*PNODE;
//栈
typedef struct Stack{
PNODE pTop;
PNODE pBottom;
}STACK,*PSTACK;
1、初始化
void init(PSTACK pStack){
//分配内存
pStack->pTop=(PNODE)malloc(sizeof(NODE));
if(NULL==pStack->pTop){
printf("动态分配内存失败");
exit(-1);
}else{
//初始化,没有数据在栈中时,栈顶和栈底都指向同一方向
//然后是栈底中的指针域设置为空
pStack->pBottom=pStack->pTop;
pStack->pBottom->pNext=NULL;
}
}
2、压栈