标签:
#include<iostream>
//#include<time.h>
//#include <stdlib.h>
using namespace std;
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0
typedef int status;//返回的状态值
typedef int elemtype;//节点里数据的类型
//每一个节点的数据结构
typedef struct stacknode
{
elemtype data;//节点的数据
stacknodeptr next;//指向下一个节点的指针.
}stacknode,*stacknodeptr;
//top的数据结构
typedef struct linlstack
{
stacknodeptr top;//指向栈顶元素的指针.
int count;//元素的个数
}linlstack;
//进栈操作
//将值e压入栈L中
status push_stack(linlstack *L,elemtype e)
{
stacknodeptr p;//定义一个指向节点的指针
p=(stacknodeptr)malloc(sizeof(stacknode));//开辟动态内存
p->next=L->top;//将该节点的指针指向原来的栈顶元素
p->data=e;//将e的值赋给现在的栈顶元素
L->top=p;//将top指针指向现在的栈顶元素
L->count++;//计数的值加一
return OK;
}
//出栈操作
//将栈L中的栈顶元素弹出到e中
status pop_stack(linlstack *L,elemtype &e)
{
if(L->count==0)//若栈为空栈则返回错误指示
return ERROR;
e=L->top->data;//将栈顶元素的数据给e
stacknodeptr p;//定义一个节点指针
p=L->top;//将指针指向原来的栈顶元素
L->top=L->top->next;//将原来的栈顶元素下面的一个元素的地址给top
L->count--;//计数减一
free(p);//将弹出栈的元素释放内存空间
return OK;
}
int main()
{
system("pause");
return 1;
}
标签:
原文地址:http://www.cnblogs.com/yanliang12138/p/4328404.html