C语言实现数据结构之栈的详解

简介:

在函数调用的过程中,需要的就是先进后出的特点,因此,栈就出现了。

栈是一种数据结构,是计算机怎么处理程序运行的一种方式。具有先进后出的特点,下面看的就是这些抽象的数据结构怎么用C语言代码来实现,栈能实现,那么其他的数据结构也就自然可以用C语言实现的了,如:队列。

C语言实现栈的代码,可以有数组形式,链表形式,下面讲解的是数组形式来实现。

静态数组因为有个大小,而且它在内存的栈区,默认为1M,所以静态数组不会分配的很大,因此用数组来实现,有个栈的容量的问题,自然就会带出“栈顶”和“栈底”,的概念。

实现环境:Visual Studio 2017

C语言实现数据结构之栈的详解

存储数据需要数组,同时有个栈中当前位置,可以想的到,在C语言中应该至少用结构体来实现。

实现栈的结构体如下:

C语言实现数据结构之栈的详解

然后根据栈的特点,会有这么几个接口:

1:判断是否栈满;

2:判断是否栈空;

3:设置栈为空;

4:入栈;

5:出栈;

为了方便数组操作,先定义一个宏:

#define N 100

下面是各个接口的实现:

C语言实现数据结构之栈的详解

C语言实现数据结构之栈的详解

C语言实现数据结构之栈的详解

C语言实现数据结构之栈的详解

调用以上接口,来测试栈的效果:

C语言实现数据结构之栈的详解

测试结果:

C语言实现数据结构之栈的详解

其实栈的实现还有链表的方式来实现。同时,C语言实现栈,只能到面向过程的范围。可以用C++来实现面向对象的栈方式,调用起来更加方便,形如:

Mystack ms;

ms.push(1);

ms.push(2);

ms.push(3);

ms.push(4);

ms.push(5);

弹出形如:

int a=ms.pop(1);

实现栈的方式虽然有多种,但是不要死记硬背,要根据自己的理解去选择,怎么适合自己的理解就怎么选择,灵活的学习轻松的学习,秘诀就在于此。比如我的笔记中就记录了多种方式,但是这里只选择一种合适的:

C语言实现数据结构之栈的详解

编程领域其实是相通的,相通的东西就是编程思想,至于语言的语法不同,只是表现形式,要透过现象看本质,才能真正把握编程的灵魂,才能有希望学的越来越轻松,否则很可能陷入其中很苦恼。

探索轻松学编程之道,我一直在做......










本文转自 ningcaichen66 51CTO博客,原文链接:http://blog.51cto.com/ningcaichen66/1967365,如需转载请自行联系原作者
目录
相关文章
|
25天前
|
存储 编译器 C语言
【数据结构】C语言实现链队列(附完整运行代码)
【数据结构】C语言实现链队列(附完整运行代码)
36 0
|
25天前
|
存储 算法 程序员
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
38 0
|
1月前
|
机器学习/深度学习 存储 算法
C语言栈与递归的实现讲解
C语言栈与递归的实现讲解
23 0
|
1月前
|
C语言
C语言栈的行编辑程序讲解
C语言栈的行编辑程序讲解
29 0
|
1月前
|
C语言
C语言栈的括号匹配的检验讲解及相关代码
C语言栈的括号匹配的检验讲解及相关代码
33 0
|
1月前
|
存储 安全 C语言
C语言抽象数据类型栈的定义讲解
C语言抽象数据类型栈的定义讲解
21 0
|
1月前
|
C语言
数据结构之栈详解(C语言手撕)
数据结构之栈详解(C语言手撕)
37 1
|
1月前
|
存储 C语言
C语言栈的表示和实现的定义讲解
C语言栈的表示和实现的定义讲解
20 0
|
21天前
|
算法 C语言
【算法与数据结构】 C语言实现单链表队列详解2
【算法与数据结构】 C语言实现单链表队列详解
|
21天前
|
存储 算法 C语言
【算法与数据结构】 C语言实现单链表队列详解1
【算法与数据结构】 C语言实现单链表队列详解