顺序栈是一种特殊的顺序表,主要操作是入栈和出栈。将顺序表加一些特定限制,就成了顺序栈。

注:

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语言实现的更多相关文章

  1. 数据结构与算法之顺序表C语言实现

    顺序表等相关概念请自行查阅资料,这里主要是实现. 注: 1.顺序表C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简单函数,可自行添加功能: 4.可用C+ ...

  2. javascript实现数据结构与算法系列:栈 -- 顺序存储表示和链式表示及示例

    栈(Stack)是限定仅在表尾进行插入或删除操作的线性表.表尾为栈顶(top),表头为栈底(bottom),不含元素的空表为空栈. 栈又称为后进先出(last in first out)的线性表. 堆 ...

  3. JavaScript 数据结构与算法之美 - 栈内存与堆内存 、浅拷贝与深拷贝

    前言 想写好前端,先练好内功. 栈内存与堆内存 .浅拷贝与深拷贝,可以说是前端程序员的内功,要知其然,知其所以然. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScri ...

  4. 数据结构与算法JavaScript (一) 栈

    序 数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录 ...

  5. PHP 程序员学数据结构与算法之《栈》

    “要成高手,必练此功”.   要成为优秀的程序员,数据结构和算法是必修的内容.而现在的Web程序员使用传统算法和数据结构都比较少,因为很多算法都是包装好的,不用我们去操心具体的实现细节,如PHP的取栈 ...

  6. 实现数据结构与算法需要掌握的C语言

    我使用C语言并不频繁,一般都是用来实现数据结构与算法,因为面向过程的编程方式容易理解算法的原理,但是呢,如果很长时间没写算法,那么就意味着C语言的某些语法就生疏了,但是总有那么一些,在写算法的时候,特 ...

  7. 【C#】【数据结构】005-栈:顺序栈

    C#数据结构:顺序栈 1.自定义顺序栈结构: /// <summary> /// 顺序栈 /// </summary> /// <typeparam name=" ...

  8. 【小白成长撸】--顺序栈(C语言版)

    // 顺序栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"//test1.0--栈表仅限Int类型 #include <stdio. ...

  9. 数据结构(C++)——顺序栈

    顺序栈结构 #include<iostream> #define MaxSize 50 using namespace std; typedef int ElemType; typedef ...

随机推荐

  1. SQL Server笔记——sql语句创建数据库

    MS SQLServer的每个数据库包含: 1个主数据文件(.mdf)必须. 1个事务日志文件(.ldf)必须. 可以包含: 任意多个次要数据文件(.ndf) 多个事务日志文件 CREATE DATA ...

  2. Javascript和android原生互调

    最近在做原生和js端的互调的功能,自己改了个demo,给大家讲解下. 先上js代码 <!DOCTYPE html> <html> <head> <meta c ...

  3. Oracle db file parallel write 和 log file parallel write 等待事件

    一. db file parallel write等待事件 引自如下blog: http://oradbpedia.com/wiki/Wait_Events_-_db_file_parallel_wr ...

  4. Linux7静默安装Oracle11g教程,亲测实用有效!

    1.查看swap大小,若小于150M,需添加增加虚拟空间 dd if=/dev/zero of=/swapadd bs=1024 count=2006424 mkswap /swapadd swapo ...

  5. UIlable上下居中

    - (void)setView{ self.chooseImg = [[UIImageView alloc] initWithFrame:CGRectMake(TO_LEFT_D, (ROW_HEIG ...

  6. openresty安装配置 Ubuntu下

    1.进入openresty-1.11.2.4的压缩包木木,我这里是在“/usr/local/”下: 2.进入后执行[tar -xzvf openresty-1.11.2.4.tar.gz]进行解压 3 ...

  7. php接口数据加密、解密、验证签名【转】

    <?php/** * 数据加密,解密,验证签名 * @edit http://www.lai18.com * @date 2015-07-08 **///header('Content-Type ...

  8. 爬虫——使用BeautifulSoup4的爬虫

    我们以腾讯社招页面来做示例:http://hr.tencent.com/position.php?&start=0#a 如上图,使用BeautifulSoup4解析器,将图1中229页,每页1 ...

  9. 其他乱七八糟的css

    white-space:normal; word-break:break-all;字母数字强制换行表格宽度失效给上table-layout:fixed(display: table-cell;此元素会 ...

  10. HTML基础实例

    本节列举了一些简单的HTML例子,帮助大家更感性地认识HTML标签.是不是对一些标签还不熟悉?别担心,后面几个章节会有详细说明,先跑几个例子看看效果吧. HTML文档相关标签所有HTML文档必须以&l ...