山东建筑大学计算机学院课程设计说明书
for(p = al[i].begin(); p != al[i].end(); p++) cout << *p << ' ';
cout < return; } int Graph::Begin(int i) { if(i<1||i>n) cout<<\无该点\ Initializepos(i); if(pos==al[i].end()) return 0; else return *pos; } int Graph::Nextvertex(int i) { if(i<1||i>n) cout<<\无该点\ pos++; if(pos!=al[i].end()) return *pos; else return 0; } 五、测试数据 #include\#include\int b[20]; int b1[20]; 14 山东建筑大学计算机学院课程设计说明书 int c[20]; int a[20]; int a1[20]; int main(void) { int n=6; int label=2; Graph g(n); //创建对象 g.Add(1,4).Add(1,3).Add(2,4).Add(2,5).Add(3,4).Add(3,6).Add(4,6).Add(5,6); g.Out(); g.BFS(1,b,label,b1); cout< g.DFS(1,a,label,a1); for(int i=1;i<=n;i++) { cout<<\节点\的入度为:\ cout< cout<<\节点\的出度为:\ cout< g.Topological(c); //执行拓扑排序 for(int i=1;i<=n;i++) cout<<\拓扑排序的第\个元素是 \cout< 15 山东建筑大学计算机学院课程设计说明书 六、测试情况 16 山东建筑大学计算机学院课程设计说明书 双向循环链表 一、问题描述 实现双向循环链表。 二、数据结构 a1 a2 a3 a3 三、逻辑设计 1、总体思路 先构造双向循环链表的节点类,再逐步实现双向循环链表的基本函数。 2、模块划分(以图示的方法给出各个函数的调用关系) DoubleCircularNode 节点类 DoubleCircular类 DoubleCirc ular类 DoubleCircular类 DoubleCircular类 17 DoubleCircular类 DoubleCircular类 DoubleCircular类 DoubleCircular类 山东建筑大学计算机学院课程设计说明书 3、函数或类的具体定义和功能 template public: DoubleCircular();//构造函数 ~DoubleCircular();//析构函数 bool IsEmpty() const;//判断是否为空 int length() const;//计算长度 bool Find(int k,T& x) const;//判断节点是否存在 int Search(const T& x) const;//查找节点 DoubleCircular void Output(ostream & out) const;//输出函数 private: DoubleCircularNode 四、编码 //DoubleCircular.h template class DoubleCircularNode; #include DoubleCircular(); ~DoubleCircular(); bool IsEmpty() const; int length() const; bool Find(int k,T& x) const; int Search(const T& x) const; DoubleCircular 18