当前位置: 首页 > news >正文

[数据结构]:03-栈(C语言实现)

目录

前言

已完成内容

单链表实现

01-开发环境

02-文件布局

03-代码

01-主函数

02-头文件

03-StackCommon.cpp

04-StackFunction.cpp

结语


前言

        此专栏包含408考研数据结构全部内容,除其中使用到C++引用外,全为C语言代码。使用C++引用主要是为了简化指针的使用,避免二重指针的出现。

已完成内容

[数据结构]:01-顺序表(C语言实现)_Chandni.的博客-CSDN博客

[数据结构]:02-单链表(C语言实现)_Chandni.的博客-CSDN博客

单链表实现

01-开发环境

        语言:C/C++14

        编译器:MinGW64

        集成开发环境:CLion2022.1.3

02-文件布局

        请在CLion集成开发环境中创建C++可执行程序,否则无法运行,原因上面已解释。

                        

03-代码

01-主函数

        用于测试和初始化栈。

#include "./Head/StackData.h"
#include "./Source/StackCommon.cpp"
#include "./Source/StackFunction.cpp"int main() {Stack SqStack;StackInitialization(SqStack);// 入栈Push(SqStack, 1);Push(SqStack, 2);Push(SqStack, 3);StackPrint(SqStack);printf("---------------------------------\n");// 获取栈顶元素ElemType value;StackGetTopElement(SqStack, value);printf("Stack TopElement Value = %d\n", value);printf("---------------------------------\n");// 出栈for (int i = SqStack.top; i >= 0; i--) {Pop(SqStack, value);printf("Stack Pop Value = %d\n", value);}return 0;
}

02-头文件

        用于存储结构体和常量等。

//
// Created by 24955 on 2023-02-22.
//#ifndef LINKEDLIST_LINKEDLISTDATA_H
#define LINKEDLIST_LINKEDLISTDATA_H
// 头文件
#include <stdio.h>
#include <stdlib.h>// 常量
#define MaxSize 3
typedef int ElemType;// 结构体-栈数组实现形式
typedef struct {ElemType data[MaxSize];int top;
} Stack;
#endif //LINKEDLIST_LINKEDLISTDATA_H

03-StackCommon.cpp

        用于存储公共函数以及栈的输出。

//
// Created by 24955 on 2023-02-22.
//
// 栈的初始化
void StackInitialization(Stack &SqStack) {/** 1. 初始化栈*/SqStack.top = -1; // 表示栈为空
}// 栈的输出
void StackPrint(Stack SqStack) {/** 1. 判断是否为空栈* 2. 若不为空,则按顺序输出栈中数据*/if (SqStack.top != -1) {for (int i = SqStack.top; i >= 0; i--) {printf("%3d", SqStack.data[i]);}printf("\n");} else {printf("Stack Empty.\n");}
}

04-StackFunction.cpp

        用于存储入栈、出栈、取栈顶元素值等函数。

//
// Created by 24955 on 2023-02-24.
//
// 入栈
void Push(Stack &SqStack, ElemType value) {/** 1. 判断栈是否已满* 2. 若不满则入栈*/if (SqStack.top < MaxSize - 1) {SqStack.data[++SqStack.top] = value;} else {printf("Stack Full.\n");}
}// 出栈
void Pop(Stack &SqStack, ElemType &value) {/** 1. 判断栈是否为空* 2. 若不为空,则出栈*/if (SqStack.top > -1) {value = SqStack.data[SqStack.top--];} else {printf("Stack Empty.\n");}
}// 获取栈顶元素
void StackGetTopElement(Stack SqStack, ElemType &value) {/** 1. 判断栈是否为空* 2. 若不为空,则输出栈顶元素值*/if (SqStack.top != -1) {value = SqStack.data[SqStack.top];} else {printf("Stack Empty.\n");}
}

结语

       本章栈的实现形式为数组的实现形式,栈还可以使用链表形式实现,但408考试概率较小,若有需要可留言,后续再发。

        此博客主要用于408考研数据结构C语言实现记录,内有不足,可留言,可讨论。

http://www.lryc.cn/news/18660.html

相关文章:

  • 1W+企业都在用的数字化管理秘籍,快收藏!
  • 多模态机器学习入门——文献阅读(一)Multimodal Machine Learning: A Survey and Taxonomy
  • 通过哲学家进餐问题学习线程间协作(代码实现以leetcode1226为例)
  • 消息队列--Kafka
  • 外盘国际期货:我国当代年轻人结婚逐年下降
  • Ubuntu 22.04.2 发布,可更新至 Linux Kernel 5.19
  • 论文阅读笔记——《室内服务机器人的实时场景分割算法》
  • Hive学习——自定义函数UDFUDTF
  • 自学前端,你必须要掌握的3种定时任务
  • __stack_chk_fail问题分析
  • linux 查看当前系统用户
  • AI算法创新赛-人车目标检测竞赛总结05
  • CSS 浮动【快速掌握知识点】
  • 在做自动化测试前需要知道的
  • 机器人学习的坚持与收获-2023
  • RSA签名加密解密
  • 【C语言】数据的存储
  • 「RISC-V Arch」SBI 规范解读(上)
  • 2023年全国最新二级建造师精选真题及答案5
  • 365智能云打印怎么样?365小票无线订单打印机好用吗?
  • 细说react源码中的合成事件
  • 【架构师】零基础到精通——架构演进
  • Hadoop命令大全
  • 一文带你快速初步了解云计算与大数据
  • STM32 OTA应用开发——通过USB实现OTA升级
  • JavaScript高级程序设计读书分享之6章——6.2Array
  • MySQL递归查询 三种实现方式
  • Servle笔记(7):过滤器
  • 2023年:我成了半个外包
  • HTTP中GET与POST方法的区别