0
点赞
收藏
分享

微信扫一扫

数据结构栈和队列学习记录——基于C语言

腊梅5朵 2022-04-04 阅读 53

Stack

顺序栈的基本操作

栈和堆的基本概念

堆和栈可以分为两种:一种是数据结构另一种是和内存的分配有关,这两种虽然都有栈和堆,但是两者关系并不大

​栈:堆是数据结构里面的叫法,有时候有人喜欢这样说 “堆栈” 其实说的就是栈而不是堆。

栈区:​堆区 则是内存模型的叫法。堆栈绝对是一个不容忽视的概念,并且在写 C 的时候也会频繁用到。但对大多数 C 初学者来说,堆栈却是一个很模糊的概念。堆栈:一种数据结构,一个在程序运行时用于存放的地方,这可能是很多初学者共同的认识,也是大部分教科书对“堆栈”的解释。很显然用这么简单的概括来解释“堆栈”是不合适的。
简而言之:栈是一种只能从表的一端存取数据且遵循 “先进后出” 原则的线性存储结构;
在这里插入图片描述

入栈(push推送)

顺序栈,即用顺序表实现栈存储结构,而顺序表的底层实现是用数组实现的;
在这里插入图片描述
此时为空栈;
数据入栈的代码实现为:

//入口参数是数组首元素地址,栈顶和压入元素,返回值是数值增加的栈顶
int push(int *a, int top, int elem) {
    a[++top] = elem;
    return top;
}

出栈(pop弹出)

就是将数组的长度剪短(top–)

//入口参数是数组首元素地址和栈顶,返回值是数值减少的栈顶
int pop(int *a, int top) {
    if (top == -1) {
        printf("空栈");
        return -1;
    }
    printf("%d\n", a[top]);
    top--;
    return top;
}

链栈的基本操作

链栈元素入栈

顺序栈的操作是通过数组实现的吗,而链栈的实现是通过链表实现的;
关于链表的相关知识,参考链接: 单链表的基本操作——基于C语言.
链栈实际上就是一个只能采用头插法插入或删除数据的链表。
代码实现:


链栈元素出栈

顺序队列的基本操作

队列的基本概念

顺序队列的实现

链式队列的基本操作

入队

出队

举报

相关推荐

0 条评论