Stack的c实现
用c语言实现stack的初始化,push,pop和Clear操作
#include<stdio.h>
#include<stdlib.h>
#include<assert.h> struct Link
{
int data;
struct Link* Next;
}; struct Stack
{
struct Link* head;
int Size;
}; void StackInit(struct Stack* sta)
{
sta->head = NULL;
sta->Size = ;
} void StackPush(struct Stack* sta, const int data)
{
struct Link* node;
node = (struct Link*)malloc(sizeof(struct Link));
assert(node != NULL);
node->data = data;
node->Next = sta->head;
sta->head = node;
++ sta->Size;
} int StackEmpty(struct Stack* sta)
{
if(sta->Size == )
return ;
return ;
} int StackPop(struct Stack* sta, int* data)
{
if(StackEmpty(sta))
return ;
struct Link* tmp = sta->head;
*data = sta->head->data;
sta->head = tmp->Next;
free(tmp);
-- sta->Size;
return ;
}
void StackClear(struct Stack* sta)
{
struct Link* tmp;
while(sta->head)
{
tmp = sta->head;
sta->head = tmp->Next;
free(tmp);
}
sta->Size = ;
} int main()
{
struct Stack sta;
StackInit(&sta);
int i;
for(i=; i<=; i++)
StackPush(&sta, i);
while(!StackEmpty(&sta))
{
StackPop(&sta, &i);
printf("%d\n", i);
}
return ;
}
C++实现
#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)
{
tmp = head;
head = head->Next;
delete tmp;
}
}
void Push(const int data)///插入data;
{
Link* node = new Link(data, head);
head = node;
++ Size;
}
bool Empty()
{
return (Size==);
}
bool Pop(int& data)
{
if(Empty())
return false;
Link* tmp = head;
data = head->data;
head = head->Next;
delete tmp;
Size--;
return true;
}
private:
Link* head;
int Size;
}; int main()
{
Stack sta;
int i;
for(i=; i<=; i++)
{
sta.Push(i);
}
while(!sta.Empty())
{
sta.Pop(i);
cout << i << endl;
}
return ;
}
Stack的c实现的更多相关文章
- 线性数据结构之栈——Stack
Linear data structures linear structures can be thought of as having two ends, whose items are order ...
- Java 堆内存与栈内存异同(Java Heap Memory vs Stack Memory Difference)
--reference Java Heap Memory vs Stack Memory Difference 在数据结构中,堆和栈可以说是两种最基础的数据结构,而Java中的栈内存空间和堆内存空间有 ...
- [数据结构]——链表(list)、队列(queue)和栈(stack)
在前面几篇博文中曾经提到链表(list).队列(queue)和(stack),为了更加系统化,这里统一介绍着三种数据结构及相应实现. 1)链表 首先回想一下基本的数据类型,当需要存储多个相同类型的数据 ...
- Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder
Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder 转自:ht ...
- Uncaught RangeError: Maximum call stack size exceeded 调试日记
异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 开发道路上不是解决问题最重要,而是解决问题的过程,这个过程我们称之为~~~调试 记 ...
- Stack操作,栈的操作。
栈是先进后出,后进先出的操作. 有点类似浏览器返回上一页的操作, public class Stack<E>extends Vector<E> 是vector的子类. 常用方法 ...
- [LeetCode] Implement Stack using Queues 用队列来实现栈
Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. po ...
- [LeetCode] Min Stack 最小栈
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...
- Stack的三种含义
作者: 阮一峰 日期: 2013年11月29日 学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈". 理解这个概念,对于理解程序的运行至关重要.容易混淆的是,这个词 ...
- Uncaught RangeError: Maximum call stack size exceeded 超出最大调用值(个人解释)
写了段jq后,报这个错,度娘未解,灵光一闪,找到原因,上代码: Html 结构: <a href="javascript:;" class="item-pic&qu ...
随机推荐
- .NET 获取客户端的操作系统版本、浏览器版本和IP地址
我们在使用.NET做网站的时候,很多情况下需要需要知道客户端的操作系统版本和浏览器版本,怎样获取客户端的操作系统和浏览器版本呢?我们可以通过分析UserAgent来获取. .NET 获取客户端的操作系 ...
- 安装numpy库
1.先安装pip: 下载地址:http://pypi.python.org/pypi/pip#downloads 下载pip-8.1.2.tar.gz(md5,pgp)完成之后,解压到一个文件夹,cm ...
- button按钮
button按钮只加类名不加type时,点击此按钮页面会刷新
- 与你相遇好幸运,使用gulp流程化Typescript后端开发
tsc --init { "compilerOptions": { "module": "commonjs", ...
- Power BI for Office 365(八)共享查询
在Power Query中,你不但可以搜索线上的数据,也可以把自己的数据发布到线上供其它人检索.Power Query通过Power BI站点提供了这种内置的分享功能.在Excel中,Anna打开了她 ...
- WPF播放视频
在现在的项目中需要使用到播放视频的功能,本来打算使用VLC来做的.后来发现WPF 4.0之后新增了MediaElement类,可以实现视频播放. <Grid> <Grid.RowDe ...
- git学习(一):建立本地仓库和基本命令
前沿 最近一直在做目标跟踪,开始一直是通过文件按日期命名的方式来区分版本的,实在是太麻烦了,现在下定决心学习一下git命令 基本概念 集中式:有一台中央服务器,每个人把需要改的部分拿回去改完再送回来 ...
- tomcat 配置项目指定域名
<Host name="www.xxx.com" appBase="D:/tomcat/webapps/web"> <alias>xxx ...
- UML学习(一)-----用例图
1.什么是用例图 用例图源于Jacobson的OOSE方法,用例图是需求分析的产物,描述了系统的参与者与系统进行交互的功能,是参与者所能观察和使用到的系统功能的模型图.它的主要目的就是帮助开发团队以一 ...
- TComboBoxEx和 TComboBox
// TComboBoxEx cbbCity: TComboBoxEx; item: TComboExItem; cbbCity.ItemsEx.Clear; //清空 cbbProv.itemInd ...