码迷,mamicode.com
首页 > 其他好文 > 详细

栈的使用

时间:2020-04-27 17:41:17      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:混淆   type   https   技术   return   size   空间   模拟   art   

一、什么是栈?

这篇文章所言的栈是一种数据结构,不要与栈区混淆。数据结构中的栈是一种线性表,特点是只允许在表头进行数据的插入和删除,也就是数据遵循先进后出的原则,一般把一端称为栈顶(top),另一端称为栈底(base)。

技术图片

 

 

 

二、栈的基本操作

对栈的基本操作只有两种,一种是入栈(push),一种是出栈(pop)。

1、入栈(push)

即将数据保存在栈顶,操作前先将栈顶(top)指针移向下一个位置,从图里看就是将top箭头上移,之后将数据保存在指针所指位置。

2、出栈(pop)

即将保存在栈顶的数据输出,然后修改栈顶指针使之移向上一个位置,从图里看就是将top箭头下移。

三、两种常用的栈
1、顺序栈
使用连续的内存空间模拟栈的空间,一般使用数组来实现,数组索引为0即为栈底,其次再定义一个变量储存栈顶位置即可,这种栈实现起来比较简单容易操作,适合初学者。

2、链式栈
使用零散的内存空间模拟栈的空间,一般使用链表1来实现,链表尾部即为栈底,链表头部即为栈顶

四、实现步骤

1、定义栈结构

 

typedef struct stack 
{
  int *base;
  int *top;
} Stack;

2、初始化栈

void initStack(Stack *Sta)
 {
  Sta->base = (int *) malloc(100 * sizeof(int));//这里申请了100个int的大小 可以根据需求更改
  Sta->top = Sta->base;
}

3、入栈操作

void push(Stack *Sta, int ele) 
{
  Sta->top++;
  *(Sta->top) = ele;
}

4、出栈操作

int pop(Stack *Sta)
 {
  int temp;
  temp = *(Sta->top);
  Sta->top--;
  return temp;
}

5、释放内存

void freeStack(Stack *Sta) 
{
  free(Sta);
}

 

转载: https://blog.csdn.net/holycipher/article/details/52782396

 

栈的使用

标签:混淆   type   https   技术   return   size   空间   模拟   art   

原文地址:https://www.cnblogs.com/zwj-199306231519/p/12787731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!