栈的构造
来源:互联网 发布:淘宝现在做什么赚钱 编辑:程序博客网 时间:2024/06/06 09:28
郝斌老师---
/* 了解栈的构造方法 */ #include <stdio.h> #include <malloc.h> #include <stdlib.h> typedef struct Node { int data; struct Node * pNext; }NODE, * PNODE; typedef struct Stack { PNODE pTop; PNODE pBottom; }STACK, * PSTACK; void init(PSTACK); //初始化栈 void push(PSTACK, int); //压栈 bool empty(PSTACK); //判断栈是否为空 void traverse(PSTACK); //遍历栈 void pop(PSTACK,int *); //出栈 void clear(PSTACK); //清空栈 int main() { STACK S; int val; /*测试初始化栈及压栈函数*/ init(&S); push(&S, 1); push(&S, 2); push(&S, 3); push(&S, 4); push(&S, 5); traverse(&S); /*测试出栈*/ pop(&S,&val); printf("被删除的栈的数据域为:%d\n", val); traverse(&S); /*测试清空栈*/ clear(&S); printf("清栈后:"); traverse(&S); return 0; } /*初始化栈——使pTop和pBottom指向同一节点*/ void init(PSTACK pS) { pS->pBottom = (PNODE)malloc(sizeof(NODE)); if (pS->pBottom == NULL) { printf("动态内存分配失败!\n"); exit(-1); } pS->pBottom->pNext = NULL; pS->pTop = pS->pBottom; return; } /*压栈——创建一个新节点,连到定节点上面,把新节点标记为顶节点*/ void push(PSTACK pS, int val) { PNODE pNew; pNew = (PNODE)malloc(sizeof(NODE)); if (NULL == pNew) { printf("动态内存分配失败!\n"); exit(-1); } pNew->data = val; pNew->pNext = pS->pTop; pS->pTop = pNew; return; } /*判断栈是否为空*/ bool empty(PSTACK pS) { if (pS->pTop == pS->pBottom) return true; else return false; } /*遍历栈——定义临时变量temp,从pTop开始一直往下指*/ void traverse(PSTACK pS) { if (empty(pS)) printf("栈为空 !\n"); else { PNODE temp; temp = pS->pTop; printf("遍历栈:"); while (temp != pS->pBottom) { printf("%d ", temp->data); temp = temp->pNext; } printf("\n"); } return; } /*出栈—— pTop下移,且把原pTop占用的空间释放,并把出栈元素保存到pVal*/ void pop(PSTACK pS,int *pVal) { if (empty(pS)) printf("栈为空!\n"); else { PNODE temp = pS->pTop; *pVal=temp->data; pS->pTop = temp->pNext; free(temp); temp=NULL; } return; } /*清空栈——类似出栈*/ void clear(PSTACK pS) { if (empty(pS)) printf("栈为空!\n"); else while (pS->pTop != pS->pBottom) { PNODE temp = pS->pTop; pS->pTop = temp->pNext;//pS->pTop = pS->pTop->pNext; free(temp); } return; }
0 0
- 栈的构造
- 栈的拷贝构造
- 栈的基本构造
- 栈的构造
- 构造函数的构造顺序
- 栈溢出(构造函数的递归)
- 链式栈的构造(C++)
- 栈和队列---构造数组的MaxTree
- 栈和队列 构造数组的MaxTree
- Kernel的构造与高斯核的构造
- 4.4-全栈Java笔记:构造方法与构造方法的重载
- 类的构造、析构、赋值构造、拷贝构造函数
- 构造函数中显式的调基类构造函数
- 对象的构造、析构、拷贝构造
- 类相互构造的构造函数
- 构造函数、拷贝构造函数的运用
- 类的直接构造和拷贝构造
- 默认构造函数的构造操作
- Android studio断点调试(全在这里)
- 搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程(参考)
- 洛谷 P1137 旅行计划
- IOS开发 POST请求数据 乱码问题
- C 笔记
- 栈的构造
- 数据库设计注意事项
- 滚动视图滚动至顶部
- HTTPS的七个误解(译文)
- Hibernate 删除对象关联集合遇到的问题
- android实现点击两次back键退出应用
- JS模块化-历史、构建工具
- ionic 中默认安装后导航在底部解决方案
- ubuntu 启动tomcat脚本