栈的链式存储结构——C语言

链式存储结构最大的好处就是没有空间的限制,通过指针指向将结点像一个链子一样把结点链接,那么栈的同样可以用于链式存储结构。
栈因为只是栈顶来做插入和删除操作,所以比较好的方法就是将栈顶放在单链表的头部(与顺序栈相反),栈顶指针和单链表的头指针合二为一。
另外栈顶在头部了,那么单链表的头结点也就失去了意义,通常对于链栈来说,是不需要头结点的。
同样对于链栈来说,基本不存在栈满的情况,除非内存已经没有可用的空间了。

下面是链栈的指向图:
在这里插入图片描述
同样链栈中最重要的算法是压栈和弹栈。

代码实现:

//栈顶放在链表的头部,栈顶指针和头指针合二。
//另外栈顶在头部,单链表的头结点也就失去了意义。
//对于链栈来说,基本不存在栈满的情况,除非内存已经没有可用的空间了。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

typedef int ElemType;
typedef struct Node
{
	ElemType data;
	struct Node *next;
}StackNode, *LinkStackpoi;

typedef struct LinkStack
{
	LinkStackpoi top;
	int count; //元素个数
}LinkStack;

//链栈的初始化
bool InitLinkStack(LinkStack *
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值