func.h
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "func.h"
void init_stack(pStack p)
{
p->phead = NULL; //链表头指针设置为NULL
p->size = 0;
}
void pop(pStack stack); //出栈
void push(pStack p, int val) //入栈
{
pNode pnew = (pNode)malloc(1, sizeof(Node)); //为压栈的新结点申请空间
pnew->m_val = val; //将要压栈的值放入对应结点空间
pnew->pNext = p->phead; //头插法
p->phead = pnew;
p->size++; //栈的元素
}
int top(pStack p)
{
return p->phead->m_val; //返回栈顶元素
}
int empty(pStack p) //判断栈顶是否为空
{
return !p->size;
}
int size(pStack p) //返回栈中数据的元素个数
{
return p->size;
}
func.c
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "func.h"
void init_stack(pStack p)
{
p->phead = NULL; //链表头指针设置为NULL
p->size = 0;
}
void pop(pStack stack); //出栈
void push(pStack p, int val) //入栈
{
pNode pnew = (pNode)malloc(1, sizeof(Node)); //为压栈的新结点申请空间
pnew->m_val = val; //将要压栈的值放入对应结点空间
pnew->pNext = p->phead; //头插法
p->phead = pnew;
p->size++; //栈的元素
}
int top(pStack p)
{
return p->phead->m_val; //返回栈顶元素
}
int empty(pStack p) //判断栈顶是否为空
{
return !p->size;
}
int size(pStack p) //返回栈中数据的元素个数
{
return p->size;
}
main.c
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "func.h"
int main()
{
Stack s;
init_stack(&s);
push(&s, 10);
push(&s, 5);
printf("the Top of the stack val=%d\n", top(&s));
pop(&s);
printf("the Top of the stack val=%d\n", top(&s));
pop(&s);
printf("stack is empty?=%c\n", empty(&s)?'Y':'N');
system("pause");
}