标签:
《数据结构》实验三
栈和队列1.回顾栈和队列的逻辑结构和受限操作特点,栈和队列的物理存储结构和常见操作。
准备时间为第5周到第6周,具体集中实验时间为6周第2次课。2个学时。
1.自己选择顺序或链式存储结构,定义一个空栈类,并定义入栈、出栈、取栈元素基本操作。然后在主程序中对给定的N个数据进行验证,输出各个操作结果。
2.自己选择顺序或链式存储结构,定义一个空栈队列,并定义入栈、出栈、取栈元素基本操作。然后在主程序中对给定的N个数据进行验证,输出各个操作结果。3.编程实现一个十进制数转换成二进制数。要求,要主程序中输出一个10进度数,输出其对应的2进制数序列。
一、链栈的实现
源代码:
#include<iostream>
using namespace std;
template <class datatype>
struct Node
{
datatype data;
Node<datatype> *next;
};
template <class datatype>
class linkstack
{
public:
linkstack(){top=NULL;}
~linkstack(){while(top!=NULL){Node<datatype> *q=top;top=top->next;delete q;}};
void push(datatype x);
datatype pop();
datatype gettop(){if(top!=NULL)return top->data;}
int Empty(){if(top==NULL)return 1;else return 0;}
private:
Node<datatype>* top;
};
template <class datatype>
datatype linkstack<datatype>::pop()
{
if(top==NULL)throw"xiayi";
datatype x=top->data;
Node<datatype> * p=top;
top=top->next;
delete p;
return x;
}
template <class datatype>
void linkstack<datatype>::push(datatype x)
{
Node<datatype> * s=new Node<datatype>;
s->data=x;
s->next=top;
top=s;
}
void main()
{
linkstack<int> t;
if(t.Empty()==1)cout<<endl<<"栈为空"<<endl;
else cout<<endl<<"栈非空"<<endl;
int r[5];
cout<<endl<<"请对栈赋5个值:"<<endl;
for(int i =0;i<5;i++)
{
cin>>r[i];
}
cout<<endl;
if(t.Empty()==1)cout<<endl<<"栈为空"<<endl;
else cout<<endl<<"栈非空"<<endl;
for(int n =0;n<5;n++)t.push(r[n]);
cout<<endl<<"栈顶元素为:"<<t.gettop()<<endl;
cout<<endl<<"执行一次初栈操作:"<<endl;
t.pop();
cout<<endl<<"栈顶元素为:"<<t.gettop()<<endl;
cout<<endl<<"执行一次初栈操作:"<<endl;
t.pop();
cout<<endl<<"栈顶元素为:"<<t.gettop()<<endl;
}
二、顺序队列的实现
源代码:
#include<iostream>
三、十进制数转为二进制数
源代码:
#include<iostream>标签:
原文地址:http://blog.csdn.net/wjy_papapa/article/details/42170481