代码 c++实现动态栈
2015-06-11 09:34
549 查看
[code]//============================================================================ // Name : 栈.cpp // Author : xingbo // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #include <malloc.h> #include <stdlib.h> using namespace std; typedef struct Node{ int data; Node * pNext; }NODE,*PNODE; typedef struct Stack{ PNODE pTop; PNODE pBottom; }STACK,* PSTACK; //以上两个,分别是节点,栈的定义 /* * pBottom永远指向最下面的一个ptop移动插入或者删除数据,判断栈为空,利用pbottom=ptop,判断是否满,不存在,满不满的问题 */ void init(PSTACK p){//传一个地址,等价于stack * p PNODE tmp=(PNODE)malloc(sizeof(NODE));//需要给他制定一个top和bottom并且指向同一个地址 if (tmp==NULL){ cout<<"错误"<<endl; exit(-1); } p->pBottom=tmp; p->pTop=tmp; p->pTop->pNext=NULL;//这一句很难想出来 } bool push(PSTACK p,int data){ /* * 1.创造新的节点 * 2.新的节点指向之前的top * 3.然后将ptop指向这个新的节点, * */ PNODE pnode = (PNODE)malloc(sizeof(NODE)); pnode->data=data; pnode->pNext=p->pTop; p->pTop=pnode; return true;} void traverse(PSTACK p){ PNODE t=p->pTop; while (t!=p->pBottom){ cout<<t->data<<","; t=t->pNext; } return; } bool isempty(PSTACK p){ if(p->pTop==p->pBottom){ return true; }else return false; } int pop(PSTACK p){ PNODE tmp; int i; if (!isempty(p)){ tmp=p->pTop; i=tmp->data; p->pTop=p->pTop->pNext;// top下移一个 free(tmp); }else{ exit(-1); } return i; } int main() { STACK S;//生声明一个空间,有两个元素,但是并没有存放有效数据,但是含有:ptop pbottom init(&S); push(&S,1); push(&S,2); push(&S,3); push(&S,4); traverse(&S); cout<<pop(&S); cout<<pop(&S); cout<<"删除之后"<<endl; traverse(&S); return 0; }
相关文章推荐
- 代码 c++实现动态栈
- C语言合并字符串函数用法(strcat)
- 《爱编程,爱c++十四期-第四章-c++对象》
- C++对象模型之编译器如何处理函数返回一个对象
- C++对象模型之详述C++对象的内存布局
- 不可或缺 Windows Native (17) - C++: 类与对象
- C++ auto_ptr智能指针的用法
- C++的默认拷贝构造函数/深拷贝/浅拷贝详解
- 字符串转化为整数
- win32 list
- C++ char*,const char*,string的相互转换
- 【转载】VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
- C/C++文字常量与常变量的概念与区别
- C/C++文字常量与常变量的概念与区别
- C++ 模板笔记
- C++ 模板笔记
- C/C++预处理指令#define,#ifdef,#ifndef,#endif…
- 整理下下c++ 下new 和 operator new
- 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩:纹理映射技术(一)
- c/c++注释的归纳与整理