栈的链式存储。。。2014.5.11

/*栈的链式存储结构*/
#include <STDIO.H>
#include <STDLIB.H>
#include <MATH.H>


#define OK 1
#define ERROR 0
/*链式结构定义*/
typedef struct stacknode
{
	int data;//存储节点的数据
	struct stacknode *next;//指向下一个结点的指针.
}stacknode,*linkstackptr;//stacknode为定义的结构体类型名,linkstackptr为结构体类型的指针类型.

typedef struct
{
	linkstackptr top;//top为linkstackptr型指针变量.
	int count;
}linkstack;//linkstack为结构体类型名.


/*链栈的入栈操作*/
/********************************************************
  *  函数名: int push(linkstack *S,int e)
  *  函数功能:元素出栈操作. 
  *  输入参数:linkstack *S,int e
  *  输出参数:int
  *  附加说明:
  *  作者:YL
  *  当前版本: v_1
  *  完成日期: 2014-03-15
  
/********************************************************/
int push(linkstack *S,int e)
{
  linkstackptr s=(linkstackptr)malloc(sizeof(stacknode));//开辟一个结点大小的内存,头指针s指向这个结点.
  s->data=e;//将要压栈的元素赋值给新结点.
  s->next=S->top;//
  S->top=s;//将头指针指向栈顶.
  S->count++;//栈内的元素个数加一.
  return OK;
}


/*链栈的出栈操作*/
/********************************************************
  *  函数名: int push(linkstack *S,int e)
  *  函数功能:元素出栈操作. 
  *  输入参数:linkstack *S,int e
  *  输出参数:int
  *  附加说明:
  *  作者:YL
  *  当前版本: v_1
  *  完成日期: 2014-03-15
  
/********************************************************/
int pop(linkstack *S,int *e)
{
	linkstackptr p;
	if(S->count==0)
		return ERROR;
	*e=S->top->data;//将要删除的栈顶元素赋值给e.
	p=S->top;
	S->top=S->top->next;//将top指针指向下一个结点.
	S->count--;//个数减1.
	free(p);//释放被删除的结点的内存.
	return OK;
}


void main()
{

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值