堆栈应用之进制转换(参考严蔚敏数据结构)
2014-10-10 08:37
295 查看
#include<iostream> #include<malloc.h> using namespace std; #define STACKSIZE 7 #define SIZEADD 3 typedef int ElemType; typedef struct Stack { ElemType *pBottom; ElemType *pTop; int Stacksize; }Stack; void InitStack(Stack &S) { S.pBottom = new ElemType[STACKSIZE]; S.pTop = S.pBottom; S.Stacksize = STACKSIZE; } void DestroyStack(Stack &S) { delete[]S.pBottom; S.pBottom = NULL; S.pTop = NULL; S.Stacksize = 0; } void ClearStack(Stack &S) { S.pTop = S.pBottom; } bool StackEmpty(Stack S) { if (S.pBottom == S.pTop) return true; else return false; } int StackLength(Stack S) { return(S.pTop - S.pBottom); } void Push(Stack &S, ElemType e) { if (S.pTop - S.pBottom >= S.Stacksize) { S.pBottom = (ElemType *)realloc(S.pBottom,(STACKSIZE + SIZEADD)*sizeof(ElemType)); S.pTop = S.pBottom + S.Stacksize; S.Stacksize += SIZEADD; } *S.pTop++ = e; } void Pop(Stack &S, ElemType &e) { if (StackEmpty(S)) return; e = *--S.pTop; } void GetTop(Stack S, ElemType &e) { if (StackEmpty(S)) return; e = *(S.pTop - 1); } void Visit(ElemType e) { cout << e << " "; } void TraverseAs(Stack S) { ElemType *p = S.pBottom; if (StackEmpty(S)) return; while (p < S.pTop) { Visit(*p); ++p; } cout << endl; } void TraverseDe(Stack S) { ElemType *p = S.pTop; if (StackEmpty(S)) return; while (p > S.pBottom) { --p; Visit(*p); } cout << endl; } void Conversion() { ElemType data,e; Stack S; InitStack(S); cout << "Enter a number:"; cin >> data;//进制待转化的十进制整数 while (data) { Push(S, data % 8); data /= 8; } while (!StackEmpty(S)) { Pop(S, e); Visit(e); } } void Conversion1() { ElemType data, e; Stack S; InitStack(S); cin >> data; while (data) { Push(S, data % 8); data /= 8; } TraverseDe(S); DestroyStack(S); } int main(void) { Conversion1(); return(0); }
相关文章推荐
- 数据结构之实用单链表(参考整理严蔚敏数据结构)
- C语言实现Huffman Tree(参考严蔚敏《数据结构》部分伪码)
- 数据结构交换排序之起泡排序(参考严蔚敏数据结构)
- 数据结构之链栈(参考整理严蔚敏数据结构)
- 数据结构之交换排序之快速排序(参考整理严蔚敏数据结构)
- 数据结构之插入排序之希尔排序(缩小增量排序)—参考整理严蔚敏数据结构
- 关于拓扑排序(参考严蔚敏数据结构)
- 数据结构之插入排序(直插,折半插,2路插)—参考整理严蔚敏数据结构
- 数据结构值行逻辑链接表实现矩阵运算(参考整理严蔚敏数据结构)
- 数据结构之有向无环图邻接表利用栈实现拓扑排序(参考整理严蔚敏数据结构)
- 数据结构之双向循环链表(参考整理严蔚敏数据结构)
- 数据结构之顺序表(部分参考C博客—文逗,整理和参考严蔚敏版数据结构)
- 数据结构之设置尾指针的单向循环链表(参考整理严蔚敏数据结构)
- 数据结构之有向网邻接表实现拓扑与关键活动(参考整理严蔚敏数据结构)
- 数据结构之无向图(邻接表)—参考严蔚敏数据结构
- 数据结构之无向图邻接表DFS之查询遍历关节点(参考整理严蔚敏数据结构)
- 数据结构之三元组顺序表实现稀疏矩阵运算(参考整理严蔚敏数据结构)
- 数据结构之选择排序之堆排序(参考严蔚敏数据结构)
- 赫夫曼编码程序(参考严蔚敏数据结构)
- 数据结构之简单选择排序(参考整理严蔚敏数据结构)