用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. 栈的 ...
随机推荐
- Linux CentOS 7通过yum命令安装Mono4.0.1
前言 上一篇中提到的快照方式安装Mono,该方式并不稳定,需要做各种配置,各种修改才能与jexus搭配运行. 一.安装源 rpm --import "http://keyserver.ubu ...
- 三剑客之SED
Sed功能说明 Sed是Strem Editor(流编辑器)缩写,是操作.过滤和转换文本内容的强大工具.常用功能有增删改查,过滤,取行. [root@old ~]# sed --versio ...
- 用systemd脚本自动启动node js程序
vi /usr/lib/systemd/system/pano.service [Unit] Description=pano - main site of site_name.com Documen ...
- STL迭代器之一:偏特化
在stl的算法中运用容器的迭代器时,很可能经常会用到迭代器相应型别(例如迭代器所指物的型别),假设算法中有必要声明一个变量,以"迭代器所指对象的型别"为类型,如何是好,例如我们写一 ...
- 设置TextBox控件的TextMode属性
我想在程式代碼中將TextBox控件的TextMode属性设置為Password,寫成TextBox1.TextMode=MultiLine和TextBox1.TextMode="Multi ...
- iOS9中的App Transport Security
问题:webView加载网页加载不出来 原因:苹果在iOS9 sdk中加入了App Transport Security限制(iOS9以前的iOS sdk默认关闭ATS),默认强制使用https,并且 ...
- JS原型和继承
//所有的函数都有一个prototype属性 function aa() { } console.info(aa.prototype); //这个prototype属性引用了一个对象,即原型,初始化时 ...
- php sleep()的实时输出打印,清除ob缓冲区
@ini_set('implicit_flush',1);ob_implicit_flush(1);@ob_end_clean(); echo 1;//echo str_repeat('', 1024 ...
- js判断input输入框长度(支持中英文输入)
function CheckTxtLength(txt) { var num = txt.replace(/[^\x00-\xff]/g, 'xx').length; if (num <=11) ...
- 批量部署ssh信任关系
要求1:大批量部署SSH信任关系,在A文件分发服务器上大批量部署WEB层面信任关系文件分发服务器为:10.0.3.9 登录用户为:zhangsan WEB层IP段:10.0.3.10~10.0.3.6 ...