链栈将十进制转换为二进制
2017-11-08 20:04
190 查看
一、 实验内容
1. 自己确定结点的数据类型和问题规模:建立一个链栈,实现链栈的压栈和出栈操作
2. 利用链栈实现由十进制到二进制的转换
二、源代码
三、实验结果
四、 总结与反思
链栈是链式存储结构,使用指针域存储的,有指针front rear指示元素的首尾位置,方便查询。链式存储方式是动态的,即需要时申请空间,不存在栈满现象,但是每个元素都需要一个指针域,从而产生结构性开销,因此,当所需操作是“先进后出”且元素个数变化较大时,使用链栈比较合适。
1. 自己确定结点的数据类型和问题规模:建立一个链栈,实现链栈的压栈和出栈操作
2. 利用链栈实现由十进制到二进制的转换
二、源代码
#include<iostream> using namespace std; class Line { private: struct Node { Node*next; int data; }; Node* top; public: Line() { top == NULL; } ~Line() { Node*t; while (top != NULL) { t = top; top = top->next; delete t; } } void Push(int i);//入栈; int Pop();//出栈; int GetPop(); int Empty() { if (top == NULL) { return 1; } else return 0; } void CZ(int n); }; void Line::Push(int i) { Node*s = new Node; s->data = i; s->next = top; top = s; } int Line::Pop() { if (top == NULL)throw"下溢"; int x = 0; Node*p = new Node; x = top->data; p = top; top = top->next; delete p; return x; } int Line::GetPop() { if (top != NULL) { return top->data; } } void Line::CZ(int n) { int k; while (n != 0) { k = n % 2; Push(k); n = n / 2; } cout << "将十进制数转换为二进制数:"; while (top != NULL) { cout << Pop(); } } int main() { int n; int m; Line K; cout << "输入需要进行转换的元素个数:"; cin >> m; for (int j = 0; j <m ; j++) { cout << "输入数据:" << endl; cin >> n; K.CZ(n); cout << "\n"; } K.Push(n); cout << "栈顶元素为:"; cout << K.GetPop() << endl; }
三、实验结果
四、 总结与反思
链栈是链式存储结构,使用指针域存储的,有指针front rear指示元素的首尾位置,方便查询。链式存储方式是动态的,即需要时申请空间,不存在栈满现象,但是每个元素都需要一个指针域,从而产生结构性开销,因此,当所需操作是“先进后出”且元素个数变化较大时,使用链栈比较合适。
相关文章推荐
- 二进制转换为八进制、十进制、十六进制的方法
- 二进制、八进制、十进制、十六进制之间转换加总结
- 二进制、八进制、十进制、十六进制之间的转换
- 十进制、二进制、八进制、十六进制之间的转换[基础]
- 二进制转换为十进制(包括小数转换)
- 将十进制转换为二进制
- 二进制和十进制之间的转换
- IP二进制和十进制的转换
- 二进制与十进制的互相转换
- 【转】二进制、八进制、十进制、十六进制之间转换
- shell 脚本转换 十六进制 十进制 八进制 二进制
- 十进制,十六进制,二进制.ASCII互相转换
- Java中十进制,二进制,十六进制的相互转换总结
- 二进制、八进制、十进制、十六进制之间转换
- java中进行二进制,八进制,十六进制,十进制间进行相互转换
- 二进制,八进制,十进制和十六进制 之间的关系转换
- 十进制转换为二进制
- [JAVA]二进制,八进制,十六进制,十进制间进行相互转换
- java: 查表法将十进制整数转换成二进制、八进制、十六进制
- JAVA二进制 十进制 八进制等是怎么转换的