网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 其他技术区 > 算法与数据结构 >

线性结构常见应用之栈[基于郝斌课程]

时间:2025-09-23 23:28

人气:

作者:admin

标签:

导读:栈的定义: 一种可以实现“先进后出”的存储结构 栈类似于箱子,先放进去的最后取出来,最后放入的先取出来 栈的分类: 静态栈的内核是数组 动态栈的内核是链表 栈的算法: 出栈...

栈的定义:

  一种可以实现“先进后出”的存储结构

  栈类似于箱子,先放进去的最后取出来,最后放入的先取出来

栈的分类:

  静态栈的内核是数组

  动态栈的内核是链表

栈的算法:

  出栈

  压栈

栈的应用:

  函数调用

  中断

  表达式求值

  内存分配

  缓冲处理

  迷宫


/*
@file      main.c
@brief     线性结构常见应用之栈
@author    EricsT (EricsT@163.com)
@version   v1.0.0
@date      2025-09-23
@history   2025-09-23 EricsT - 新建文件
*/

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

typedef struct NODE
{
	int data;
	NODE* ptrNext;
}* PtrNode, Note;

typedef struct STACK
{
	PtrNode ptrTop;
	PtrNode ptrBottom;
}* PtrStack, Stack;

void InitStack(PtrStack ptrStack);//初始化
void PushStack(PtrStack ptrStack, int pushValue);//压栈
bool PopStack(PtrStack ptrStack);//出栈
void TraverseStack(const PtrStack ptrStack);//遍历
bool IsEmptyStack(const PtrStack ptrStack);//判断是否为NULL
void ClearStack(PtrStack ptrStack);//清空栈

int main(void)
{
	Stack stack;

	InitStack(&stack);

	int pushValue;
	printf("请输入插入数值");
	scanf("%d", &pushValue);
	PushStack(&stack, pushValue);

	printf("请输入插入数值");
	scanf("%d", &pushValue);
	PushStack(&stack, pushValue);

	printf("请输入插入数值");
	scanf("%d", &pushValue);
	PushStack(&stack, pushValue);

	printf("请输入插入数值");
	scanf("%d", &pushValue);
	PushStack(&stack, pushValue);

	printf("请输入插入数值");
	scanf("%d", &pushValue);
	PushStack(&stack, pushValue);

	TraverseStack(&stack);

	PopStack(&stack);

	TraverseStack(&stack);

	ClearStack(&stack);

	TraverseStack(&stack);

	return 0;
}

void InitStack(PtrStack ptrStack)
{//顶栈和底栈都指向空节点

	ptrStack->ptrBottom = (PtrNode)malloc(sizeof(NODE));
	ptrStack->ptrBottom->ptrNext = NULL;

	ptrStack->ptrTop = ptrStack->ptrBottom;
}

void PushStack(PtrStack ptrStack, int pushValue)
{
	PtrNode ptrPushNode = (PtrNode)malloc(sizeof(NODE));

	ptrPushNode->data = pushValue;
	ptrPushNode->ptrNext = ptrStack->ptrTop;

	ptrStack->ptrTop = ptrPushNode;
}

void TraverseStack(const PtrStack ptrStack)
{
	PtrNode ptrNodeCur = ptrStack->ptrTop;

	//while (NULL != ptrNodeCur->ptrNext)
	//{
	//	printf("%d ", ptrNodeCur->data);
	//	ptrNodeCur = ptrNodeCur->ptrNext;
	/ 
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信