链式栈C++实现
来源:互联网 发布:深圳国税开票软件 编辑:程序博客网 时间:2024/06/14 09:50
<span style="font-size:18px;">#include <iostream>#include<stdio.h>#include<malloc.h>#include<stdlib.h>using namespace std;typedef struct Node{ int data; struct Node *pNext;}NODE,*PNODE;typedef struct Stack{ PNODE pTop; PNODE pBottom;}STACK,*PSTACK;//函数声明void initStack(PSTACK);void push(PSTACK,int);void traverse(PSTACK);bool pop(PSTACK,int *);void clearStack(PSTACK);bool empt(PSTACK);int main(){ STACK s;//STACK等价于struct Stack initStack(&s); push(&s,1); push(&s,2); push(&s,3); push(&s,4); push(&s,5); push(&s,6); int val; traverse(&s); //出栈 bool b = pop(&s,&val); if(b){ //遍历输出 printf("出栈成功,出栈元素="); printf("%d\n",val); traverse(&s); }else{ printf("出栈失败\n"); } clearStack(&s); printf("清空栈\n"); traverse(&s); printf("进栈\n"); push(&s,1); push(&s,2); push(&s,3); traverse(&s); return 0;}//将栈清空void clearStack(PSTACK pStack){ if(empt(pStack)){ return ; }else{ while(pStack->pBottom!=pStack->pTop){ PNODE p = pStack->pTop; pStack->pTop =p->pNext; free(p); p=NULL; } }}//用来判断栈是否为空bool empt(PSTACK pStack){ if(pStack->pTop==pStack->pBottom){ return true; }else{ return false; }}//用来弹栈,这个val将出栈的元素保存bool pop(PSTACK pStack,int * val){ if(empt(pStack)){ return false; }else{ PNODE p = pStack->pTop; pStack->pTop=p->pNext; *val =p->data; free(p); p=NULL; return true; }}//用来遍历栈void traverse(PSTACK pStack){ PNODE p = pStack->pTop; while(p!=pStack->pBottom){ printf("%d\n",p->data); p=p->pNext; }}//用来压栈void push(PSTACK pStack,int value){ PNODE p = (PNODE)malloc(sizeof(NODE)); if(NULL==p){ printf("压栈失败\n"); exit(-1); }else{ p->data=value; p->pNext=pStack->pTop;//pStack->pTop不能随便改成pStack->pBottom pStack->pTop=p; }}//用来初始化栈void initStack(PSTACK pStack){ PNODE p = (PNODE)malloc(sizeof(NODE)); if(NULL==p){ printf("动态内存分配失败\n"); exit(-1); }else{ pStack->pBottom=p; pStack->pTop=p; pStack->pTop->pNext=NULL; }}</span>
1 0
- C实现链式栈
- C链式栈实现
- 数据结构 链式 栈 c实现
- C语言实现链式栈
- c链式栈的实现
- 链式栈的C实现
- C实现顺序栈和链式栈
- 用c语言实现的链式栈
- 链式栈的实现(ANSI C)
- C++ 链式栈的实现
- 数据结构-链式栈-C语言实现
- 链式栈的C语言实现
- 链表实现链式栈 c语言
- C语言反向链式栈的实现
- C语言实现的一个链式栈
- 栈的链式实现(C语言)
- 数据结构 -- 用C实现链式栈
- 栈的链式存储实现c语言
- 【胖鱼头】基于Sentinel的Redis主从分片集群搭建
- jqurey 获取 form 表单中所有数据,支持多维数组
- 惊呼——SVM支持向量机三重境界!
- 20160311 调研
- POJ 1061 青蛙的约会
- 链式栈C++实现
- 《Storm入门》中文版
- 玩转Nodejs日志管理log4js
- 解决php ZipArchive执行后无法生成zip文件的问题
- 获取指定的斜杠后面的内容
- IOS指令集
- 认识redis的数据结构
- 代码规范和一些技巧
- cvShowImage( )函数