您的位置:首页 > 其它

链栈将十进制转换为二进制

2017-11-08 20:04 190 查看
一、        实验内容
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指示元素的首尾位置,方便查询。链式存储方式是动态的,即需要时申请空间,不存在栈满现象,但是每个元素都需要一个指针域,从而产生结构性开销,因此,当所需操作是“先进后出”且元素个数变化较大时,使用链栈比较合适。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: