用c和c++的方式实现栈
#include <stdio.h>
#include <stdlib.h>
#include <assert.h> struct LinkNode
{
int data;
struct LinkNode* next;
}; struct Stack
{
struct LinkNode* head;
int size;
}; void StackInit(struct Stack* stack)
{
stack->head = NULL;
stack->size = ;
} void StackPush(struct Stack* stack, const int num)
{
struct LinkNode* node = (struct LinkNode*)malloc(sizeof(struct LinkNode));
assert(node != NULL);
node->data = num;
node->next = stack->head;
stack->head = node;
++stack->size;
return;
} int StackEmpty(struct Stack* stack)
{
return (stack->size == );
} int StackPop(struct Stack* stack, int* num)
{
if (StackEmpty(stack) == )
return ; *num = stack->head->data;
struct LinkNode* tmp;
tmp = stack->head;
stack->head = stack->head->next;
--stack->size;
free(tmp);
return ;
} void StackCleanup(struct Stack* stack)
{
struct LinkNode* tmp;
while (stack->head != NULL)
{
tmp = stack->head;
stack->head = stack->head->next;
free(tmp);
} stack->size = ;
return;
} int main(void)
{
struct Stack stack;
StackInit(&stack);
int i;
for (i = ; i < ; i++)
{
StackPush(&stack, i);
} while (!StackEmpty(&stack))
{
StackPop(&stack, &i);
printf("%d ", i);
} printf("\n");
return ;
}
#include <iostream>
using namespace std; class Stack
{
struct Link
{
int data_;
Link* next_;
Link(int data, Link* next) :data_(data), next_(next)
{ }
}; public:
Stack() :head_(), size_()
{ } ~Stack()
{
Link* tmp;
while (head_ != NULL)
{
tmp = head_;
head_ = head_->next_;
delete tmp;
} return;
} void Push(const int num)
{
Link* node = new Link(num, head_);
head_ = node;
++size_;
return;
} bool Empty()
{
return (size_ == );
} bool Pop(int& num)
{
if (Empty() == )
return false; num = head_->data_;
Link* tmp = head_;
head_ = head_->next_;
--size_;
delete tmp;
return true;
} private:
Link *head_;
int size_;
}; int main(void)
{
Stack stack;
int i;
for (i = ; i < ; i++)
{
stack.Push(i);
} while (!stack.Empty())
{
stack.Pop(i);
cout<<i<<" ";
} cout<<endl;
return ;
}
用c和c++的方式实现栈的更多相关文章
- Java三种方式实现栈和队列
栈:LIFO(后进先出) 队列:FIFO(先进先出) 1.栈:LIFO(后进先出) 1.1.栈的顺序存储结构实现: /** * 基于数组实现的顺序栈 * @param <E> */ pub ...
- ARM的栈指令
ARM的指令系统中关于栈指令的内容比较容易引起迷惑,这是因为准确描述一个栈的特点需要两个参数: 栈地址的增长方向:ARM将向高地址增长的栈称为递增栈(Descendent Stack),将向低地址增长 ...
- C语言中的栈和堆
原文出处<http://blog.csdn.net/xiayufeng520/article/details/45956305#t0> 栈内存由编译器分配和释放,堆内存由程序分配和释放. ...
- 【译】.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱
为何要翻译 一来是为了感受国外优秀技术社区知名博主的高质量文章,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果,最后也是为了锻炼一下自己的英文读写能力.因为是首次翻译英文文章(哎,原谅我这个 ...
- javascript数据结构与算法---栈
javascript数据结构与算法---栈 在上一遍博客介绍了下列表,列表是最简单的一种结构,但是如果要处理一些比较复杂的结构,列表显得太简陋了,所以我们需要某种和列表类似但是更复杂的数据结构---栈 ...
- .NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱 (转)
作者: Edison Chou 来源: 博客园 发布时间: 2014-09-03 15:59 阅读: 318 次 推荐: 2 原文链接 [收藏] 原文作者:Shivprasad k ...
- .NET中的六个重要概念:栈、堆、值类型、引用类型、装箱和拆箱
为何要翻译 一来是为了感受国外优秀技术社区知名博主的高质量文章,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果,最后也是为了锻炼一下自己的英文读写能力.因为是首次翻译英文文章(哎,原谅我这个 ...
- 栈的C++实现(数组)——创建-push-pop-top-清空栈-处理栈
今天学习了利用数组方式的栈的C++实现,这种方式跟指针实现有很多不一样的地方: 栈的指针实现,栈的创建申请头结点,push需要申请新的结点,pop释放结点,这些结点都放在第一个位置,top时,S-&g ...
- 栈的图文解析 和 对应3种语言的实现(C/C++/Java)
概要 本章会先对栈的原理进行介绍,然后分别通过C/C++/Java三种语言来演示栈的实现示例.注意:本文所说的栈是数据结构中的栈,而不是内存模型中栈.内容包括:1. 栈的介绍2. 栈的C实现3. 栈的 ...
随机推荐
- 关于C#本质论和CLR via C#中译本,不吐不快
C#本质论和CLR via C#两本好书,周老师可能是俗务缠身,太忙了吧,翻译得只能让人呵呵了. 你要是忙,别接那么多活好不啦. 现在都在说供给侧改革,都在大力提倡工匠精神,我们做技术的,还是踏实点好 ...
- Sublime插件安装
来在Sublime text3上安装Package Control 使用Ctrl+`(ESC下边的那个~)快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: imp ...
- Mysql字符类型比较
一. binary和char比较: binary 字节为单位,char字符为单位,字符占几个字节取决于字符集 binary 比较规则基于字节值,char基于字符,即使是_bin的比较规则 范围都0- ...
- javascript date picker
一个简洁的date picker <html><head><meta http-equiv="Content-Type" content=" ...
- SQL数据库与excel表格之间的数据 导入
- Ubuntu 14.10安装SecureCRT 7.3(转)
原文 :http://blog.csdn.net/chszs/article/details/40623169 1.软件准备 Ubuntu14.04 x64 下载SecureCRT7.3的版本:scr ...
- window SVN设置忽略文件列表
进入checkout的项目文件夹. 执行 mvn install.生成 target文件夹. 如果这时候不想让target文件夹纳入版本控制.则进入子文件夹,在target文件夹上 右键执行 查看设置 ...
- mapreduce出现类似死锁情况
在往hbase表里通过bulkload导数据时,某个mapreduce跑了一个多小时还没跑,看yarn界面,发现map还有一小部分没跑完,没跑完的map全在pending,running中没有,同时r ...
- AIX 环境下动态路由
IBM AIX v5.3操作系统环境下动态路由配置如下: 1,用命令lssrc -S routed和lssrc -S gated分别检查routed和gated子系统是是活动状态.如果这两个子系统为活 ...
- ---arch linux 下装wordpress
首先要先装apach和phphttps://translate.google.com/translate?hl=zh-CN&sl=de&tl=en&u=https%3A%2F% ...