C语言 实现链栈
来源:互联网 发布:四川省网络信息办公室 编辑:程序博客网 时间:2024/05/21 10:07
#include <stdio.h>#include <stdlib.h>using namespace std;typedef int DataType;typedef struct stStack{ DataType data; struct stStack* pTop;}STACK;/* 初始化栈*/STACK* initStack(){ STACK* pNewNode = (STACK*)malloc(sizeof(STACK)); if (NULL != pNewNode) { pNewNode->data = 0; pNewNode->pTop = NULL; } return pNewNode;}/* 入栈操作 */STACK* pushStack(STACK* pHead, DataType paraData){ STACK* pNewNode = (STACK*)malloc(sizeof(STACK)); if (NULL == pNewNode) { return NULL; } pNewNode->data = paraData; pNewNode->pTop = pHead; pHead = pNewNode; return pHead;}/* 出栈操作 */STACK* popStack(STACK* pHead, DataType* outData){ /* 如果栈为空 */ if (NULL == pHead->pTop) { return NULL; } /* 把数据传出去 */ *outData = pHead->data; STACK* pTemp = pHead; pHead = pHead->pTop; /* 把头删除 */ delete pTemp; return pHead;}/* 返回栈顶元素值 */int getTopStack(STACK* pHead, DataType* outData){ /* 如果栈为空 */ if (NULL == pHead->pTop) { return -1; } *outData = pHead->data; return 0;}/* 遍历栈的操作 */int visitStack(STACK* pHead){ STACK* pTemp = pHead; /* 判断栈是否为空 */ if (NULL == pHead->pTop) { printf("This stack is empty\n"); return -1; } while (NULL != pTemp->pTop) { printf("%d ", pTemp->data); pTemp = pTemp->pTop; } printf("\n");}/* 清空栈 */STACK* destoryStack(STACK* pHead){ STACK* pTemp = NULL; while (NULL != pHead->pTop) { pTemp = pHead; pHead = pHead->pTop; delete pTemp; } return pHead;}int main(){ DataType num = 0; STACK* pHead = initStack(); /* 入栈 */ pHead = pushStack(pHead, 3); pHead = pushStack(pHead, 10); pHead = pushStack(pHead, 55); visitStack(pHead); /* 出栈 */ pHead = popStack(pHead, &num); visitStack(pHead); /* 返回栈顶的元素 */ getTopStack(pHead, &num); printf("%d\n", num); /* 销毁栈 */ pHead = destoryStack(pHead); visitStack(pHead); return 0;}
0 0
- C语言链栈实现
- C语言 实现链栈
- 栈C语言实现
- C语言实现栈
- C语言实现栈
- C语言实现栈
- C语言实现栈
- C语言实现栈
- c语言实现栈
- C语言实现栈
- C语言栈实现
- C语言实现栈
- C语言实现数据结构中的链栈
- 数据结构C语言实现之链栈
- 栈链的C语言实现
- C语言实现简单链栈
- <数据结构>链栈的C语言实现
- 链栈的c语言实现
- GIT 代码自动部署
- 学习设计模式——模式、原则
- iOS 发短信
- 使用Struts2进行文件下载
- Windows 7 OS,如何Debug NDK Hello-JNI Sample程序
- C语言 实现链栈
- UITalbeView - 3
- 使用pinyin4j
- Android学习中ADT创建工程后出现appcompat_V7包和自定义包异常处理方法(文章转移)
- 剑指offer_面试题10_二进制中1的个数(位运算)
- LeetCode(80) Remove Duplicates from Sorted Array II
- HDU - 4289 Control (最小割 MCMF)
- c#值得注意的基础知识点3.49
- 南阳oj 小猴子下落 题目63