文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
算法与数据结构实验报告
篇一:数据结构与算法实验报告C++版 算法与数据结构 实验报告
实验一:栈与队列 一、实验目的
1、掌握栈和队列特点、逻辑结构和存储结构
2、熟悉对栈和队列的一些基本操作和具体的函数定义。 3、利用栈和队列的基本操作完成一定功能的程序。 二、实验任务
1. 出顺序栈的类定义和函数实现,利用栈的基本操作完成十进制数N与其它d进制数 的转换。(如N=1357,d=8)
2. 给出顺序队列的类定义和函数实现,并利用队列计算并打印杨辉三角的前n行的内 容。(n=8)
3. 给出链栈的类定义和函数实现,并设计程序完成如下功能:读入一个有限大小的整
数n,并读入n个数,然后按照与输入次序相反的次序输出各元素的值。 三、实验原理
1、将十进制数N转化为d进制时,用除去余数法,用d
1文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
除N所得余数作为d进制当前 个位,将相除所得的商的整数部分作为新的N值重复上述计算,直到N为0为止。 将 前所得到的各余数反过来连接便得到最终结果。将每次求出的余数入栈,求解结束后, 再依次出栈。 2、在杨辉三角中可用上一行的数来求出对应位置的下一行的内容。用队列保存上行内容,每当由上行的两个数求出下行的一个数时,其中的前一个便需要删除,而求出的数就入队。为便于求解,在每行的第一个位置添加一个0作为辅助。
3、输出操作应在读入所有输入的整数后才能进行,用栈来存储这些数据,调用入栈出栈 函数实现相关功能。 四、程序清单 第一题
#include #ifndef STACK_H #define STACK_H const int maxlen=256; typedef int elementtype; enum error_code{success, underflow, overflow}; class stack{ public: stack(); bool empty() const; bool full() const; error_code get_top(elementtype &x) const; error_code push(const elementtype x); error_code pop(); private: int count; elementtype data[maxlen]; };
stack::stack(){count=0;}
bool stack::empty() const { if(count==0) return
2文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
true; return false; }
error_code stack::get_top(elementtype &x) const {
if(empty())
return
underflow;
else{x=data[count-1]; return success; } }
error_code stack::push(const elementtype x) { if(full()) return overflow; data[count]=x; count++;
return success; }
error_code stack::pop() {
if(empty()) return underflow; count--; return success; }
bool stack::full() const { if(count==maxlen) return true; return false; } #endif
void Dec_to_Ocx(int N, int d) { stack S;int Mod,x;while(N!=0) { Mod=N%d; 第二题
#include const int maxlen=256; typedef int elementtype; enum error_code{success, underflow, overflow}; class queue{ public: queue(); bool empty()const; bool full()const; error_code get_front(elementtype &x) const; error_code
3文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
append(const elementtype x); error_code serve(); private: int count; int front,rear; elementtype data[maxlen]; };
queue::queue(){count=0; front=rear=0;} bool
queue::empty()const{if(count==0) return true;return false; }
bool queue::full()const{ if(count==maxlen-1) return true; return false; S.push(Mod); N=N/d; }
while(!S.empty()) { S.get_top(x); S.pop();
cout>N;cin>>d;
Dec_to_Ocx(N,d); } }
error_code
queue::get_front(elementtype
return
underflow;
&x)const{ if(empty())
x=data[(front+1)%maxlen]; return success; }
error_code queue::append(const elementtype
if(full())
return
overflow;
x){
rear=(rear+1)%maxlen; data[rear]=x; count ++; return success; }
error_code queue::serve(){ if(empty()) return underflow; front=(front+1)%maxlen; count--;
4文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
return success; }
void Out_Number(int n)
{ int s1,s2; queue Q;int i,j; error_code Ec; cout for(i=2; i>n; s1=s2; Out_Number(n);} } 第三题
#include #ifndef STACK_H #define STACK_H const int maxlen=256; typedef struct linklist { int data; struct linklist *next;}node;
typedef int elementtype; enum error_code{success, underflow, overflow}; class stack{ public: stack(); ~stack();
bool empty() const;boolfull() const;error_code get_top(elementtype &x)const; error_codepush(const elementtype x);
error_code pop(); private: intcount;node*top; }; stack::stack()
{ count = 0; top = NULL; }
bool(转载自: 小草 范 文 网:算法与数据结构实验报告) stack::empty( )const { return count == 0; }
bool stack::full( )const { return false; }
5文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.