IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> c语言模拟实现栈 -> 正文阅读

[数据结构与算法]c语言模拟实现栈

1何为栈

2出栈与入栈

在这里插入图片描述

字义
栈顶进行数据的插入与删除的一端叫栈顶
栈尾未进行数据的插入与删除的一端叫栈尾
压栈栈的插入操作叫入栈/压栈/进栈
出栈栈的删除(注意:栈的删除也是从顶部开始的)
  • 栈的进入如下面mp4所示

(最上面为栈顶)

进栈:

模拟实现栈

出栈:

<一直没审核完毕>

  • 接下来我们通过代码模拟实现栈

                            -.- 模拟 ^0^
    
序号模拟执行内容
1栈的初始化
2入栈
3出栈
4获取栈顶元素
5计数元素个数
6检查栈是否为空
7销毁栈

在进行代码我们先创建结构体

typedef int STDataType;
typedef struct stack
{
STDataType
a;
int top;//栈顶间接性计数
int capacity;
*
}stack;

  • 1.//初始化
    void Stack_Init(stack* pz)
    {
    assert(pz);
    pz->a = NULL;
    pz->capacity = 0;
    pz->top = 0;

}

  • 2.`//入栈

void Stack_Push(stack* ps, STDataType nb)
{
assert(ps);
if (ps->top == ps->capacity)
{
int newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;
ps->a=(STDataType*) realloc(ps->a,newcapacity*sizeof(STDataType));
if (ps->a == NULL)
{
printf(“realloc fail\n”);
exit(-1);
}
ps->capacity = newcapacity;
}
ps->a[ps->top] = nb;
ps->top++;
}`

  • 3.//出栈
    void Stack_Pop(stack* pz)
    {
    assert(pz);
    assert(pz->top>0);
    –pz->top;
    }

  • 4.//获取栈顶元素
    STDataType Stack_Top(stack* pz)
    {
    assert(pz);
    assert(pz->top > 0);
    return pz->a[pz->top-1];
    }

  • 5.//获取的个数
    int Stack_Size(stack* pz)
    {
    assert(pz);
    return pz->top;
    }

  • 6.//检查是否为空为空返回0不为空返回结果
    bool Stack_Empty(stack* pz)
    {
    assert(pz);
    /if (pz->top > 0)
    {
    return pz->top;
    }
    else
    {
    return 0;
    }
    /

    //top等于0为真
    //不等于0为假
    return pz->top == 0;
    }

  • 7.//销毁
    void Stack_Destroy(stack* pz)
    {
    assert(pz);
    free(pz->a);
    pz->a = NULL;
    pz->capacity = 0;
    pz->top = 0;

}

^ 0 ^
– 0 – 最终达到的效果如图.
在这里插入图片描述

总结:

—今天用的编辑器不习惯然后那个视频自己刚刚会弄不太熟练,不是特别好看,所以大家希望别建议,我会慢慢的提高自己。
— 栈的学习感觉比链表会更抽象的感觉。
— 变强的路很累。
— 让我们大家一起进步吧。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:38:43  更:2022-04-01 23:39:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:44:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码