数据结构与算法之顺序栈C语言实现
顺序栈是一种特殊的顺序表,主要操作是入栈和出栈。将顺序表加一些特定限制,就成了顺序栈。
注:
1.顺序栈C语言实现;
2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善;
3.提供几个简单函数,可自行添加功能;
4.可用C++封装。
顺序栈容量
#define CAPACITY 20 //容量
顺序栈结构体
typedef struct
{
int *m_pHead; //指向数组头
int m_iTop; //栈顶
int m_iCapacity; //容量
}SStack;
核心操作入栈出栈
SStack* createStack();
void push(SStack *pStack, int iElement);
int pop(SStack *pStack);
void showStack(SStack *pStack);
void releaseMem(SStack* pStack);
创建顺序栈
SStack* createStack()
{
SStack *pStack = (SStack*)malloc(sizeof(SStack));
if(!pStack)
{
printf("动态内存分配失败!\n");
return pStack;
} pStack->m_pHead = (int*)malloc(sizeof(int) * CAPACITY);
if(!pStack->m_pHead)
{
printf("动态内存分配失败!\n");
return NULL;
} pStack->m_iTop = -;
pStack->m_iCapacity = CAPACITY; return pStack;
}
入栈
void push(SStack *pStack, int iElement)
{
if(!pStack || !pStack->m_pHead)
{
printf("顺序栈不存在!\n");
return;
} if(pStack->m_iTop == pStack->m_iCapacity - )
{
printf("顺序栈已满!\n");
return;
} pStack->m_pHead[++pStack->m_iTop] = iElement;
}
出栈
int pop(SStack *pStack)
{
if(!pStack || !pStack->m_pHead)
{
printf("顺序栈不存在!\n");
return -;
} if(pStack->m_iTop < )
{
printf("顺序栈元素个数为0!\n");
return -;
} return pStack->m_pHead[pStack->m_iTop--];
}
打印
void showStack(SStack *pStack)
{
if(!pStack || !pStack->m_pHead)
{
printf("顺序栈不存在!\n");
return;
} printf("容量:%d,栈顶:%d,打印元素:\n", pStack->m_iCapacity, pStack->m_iTop);
for(int i = ; i <= pStack->m_iTop; i++)
printf("%d ", pStack->m_pHead[i]); printf("\n");
}
释放内存
void releaseMem(SStack* pStack)
{
if(!pStack)
{
printf("顺序栈不存在!\n");
return;
} if(pStack->m_pHead)
free(pStack->m_pHead); free(pStack);
printf("内存释放成功!\n");
}
数据结构与算法之顺序栈C语言实现的更多相关文章
- 数据结构与算法之顺序表C语言实现
顺序表等相关概念请自行查阅资料,这里主要是实现. 注: 1.顺序表C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简单函数,可自行添加功能: 4.可用C+ ...
- javascript实现数据结构与算法系列:栈 -- 顺序存储表示和链式表示及示例
栈(Stack)是限定仅在表尾进行插入或删除操作的线性表.表尾为栈顶(top),表头为栈底(bottom),不含元素的空表为空栈. 栈又称为后进先出(last in first out)的线性表. 堆 ...
- JavaScript 数据结构与算法之美 - 栈内存与堆内存 、浅拷贝与深拷贝
前言 想写好前端,先练好内功. 栈内存与堆内存 .浅拷贝与深拷贝,可以说是前端程序员的内功,要知其然,知其所以然. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScri ...
- 数据结构与算法JavaScript (一) 栈
序 数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录 ...
- PHP 程序员学数据结构与算法之《栈》
“要成高手,必练此功”. 要成为优秀的程序员,数据结构和算法是必修的内容.而现在的Web程序员使用传统算法和数据结构都比较少,因为很多算法都是包装好的,不用我们去操心具体的实现细节,如PHP的取栈 ...
- 实现数据结构与算法需要掌握的C语言
我使用C语言并不频繁,一般都是用来实现数据结构与算法,因为面向过程的编程方式容易理解算法的原理,但是呢,如果很长时间没写算法,那么就意味着C语言的某些语法就生疏了,但是总有那么一些,在写算法的时候,特 ...
- 【C#】【数据结构】005-栈:顺序栈
C#数据结构:顺序栈 1.自定义顺序栈结构: /// <summary> /// 顺序栈 /// </summary> /// <typeparam name=" ...
- 【小白成长撸】--顺序栈(C语言版)
// 顺序栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"//test1.0--栈表仅限Int类型 #include <stdio. ...
- 数据结构(C++)——顺序栈
顺序栈结构 #include<iostream> #define MaxSize 50 using namespace std; typedef int ElemType; typedef ...
随机推荐
- jstl 中substring,length等函数用法
引入jstl库:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%& ...
- Zookeeper入门开发demo
package CreateGroup; import java.io.IOException; import java.util.List; import java.util.concurrent. ...
- AngularJS 控制器函数
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- select 文字右对齐
select { direction: rtl; } select option { direction: ltr; }
- 菜鸟笔记 -- Chapter 6.3 对象
6.3 对象 Java是一门面向对象的程序设计语言,对象是由类抽象出来的,所有的问题都是通过对象来处理的,对象可以操作类的属性和方法解决相应的问题,所以了解对象的产生.操作和生存周期对学习Java语言 ...
- 嵌入式:指针的指针、链表、UCOS 的 OSMemCreate 。
初看,UCOS 的 OSMemCreate 代码,感觉有点怪怪的,比如,把 指针指向的地址 强制转换成 指针的指针的指向地址 ?那转换后 指针的指针 又是什么? void OSMemCreate (O ...
- fjutacm 3700 这是一道数论题 : dijkstra O(mlogn) 二进制分类 O(k) 总复杂度 O(k * m * logn)
/** problem: http://www.fjutacm.com/Problem.jsp?pid=3700 按二进制将k个待查点分类分别跑dijkstra **/ #include<std ...
- jQuery代码解释(基本语法)
html中jquery的以下用法 求解: var header = {}; header.ajaxCallComplete = false; header.login = false; header. ...
- webpack和sass功能简介
1.webpack webpack 是一个打包工具,为什么需要打包?因为有的人的脚本开发语言可能是 CoffeeScript 或者是 TypeScript,样式开发工具可能是 Less 或者 Sass ...
- C语言学习记录_2019.01.29
C语言的灵魂:指针 #include <stdio.h> int main(int argc, char **argv) { printf("Hello, World!\n&q ...