数据结构 第二周(3)程序的多文件组织
来源:互联网 发布:排班软件 编辑:程序博客网 时间:2024/05/23 21:23
问题描述
项目2 - 程序的多文件组织】
学习数据结构,目标就是要编制出有相当规模的程序的。将所有的代码放在一个文件中的做法,不能适用现阶段的需求了。
通过这个项目,确认有能力用多文件组织程序。方便以后各章,我们就某一数据结构定义算法库,并能引用算法库进行实践。
最简单的多文件组织,一个项目中有3个文件:
(1) .h 头文件:定义数据类型、声明自定义函数、定义宏等
(2).cpp 源文件1:用于实现头文件中声明的自定义函数
(3).cpp 源文件2:定义main()函数,用于调用相关函数,实现问题求解目标。
首先,先列出main.cpp中的调用函数,调用的函数保存在file.cpp file.h中
#include <iostream>#include "file.h"//对头文件的声明,头文件里包含有函数的声明。using namespace std;int main(){ ElemType a[6]={2,3,4,5,6},e; SqList *L; CreatList(L,a,5); ListInsert(L,0,0); DispList(L); return 0;}
其次是file.h中的函数,包含函数的声明
#ifndef FILE_H_INCLUDED#define FILE_H_INCLUDED//函数的声明存放在此.h文件里。#define MaxSize 50typedef int ElemType;typedef struct{ ElemType data[MaxSize]; int length;} SqList;void CreatList(SqList *&L,ElemType a[],int n);void InitList (SqList *&L);void DestroyList (SqList *&L);bool ListEmpty(SqList *&L);int ListLength(SqList *&L);bool GetElem(SqList *&L,int i,ElemType &e);int LocateElem(SqList *L,ElemType e);bool ListInsert(SqList *&L,int i,ElemType e);bool DeleList(SqList *&L,int i,ElemType &e);void DispList(SqList *&L);#endif // FILE_H_INCLUDED
file.cpp中的函数
//说明函数的声明是在file.h里,定义在此.cpp文件里。#include"file.h"#include<iostream>using namespace std;#include<malloc.h>//以下是对函数的定义。//创立顺序表。void CreatList(SqList *&L,ElemType a[],int n){ int i=0,k=0; L=(SqList *)malloc(sizeof(SqList)); for(i;i<n;i++) { L->data[i]=a[i]; ++k; } L->length=k;}//初始化顺序表void InitList (SqList *&L){ L=(SqList *)malloc(sizeof(SqList)); L->length=0;}//销毁顺序表void DestroyList (SqList *&L){ free(L);}//判断是否为空表:若是返回true,1。否则false,0;bool ListEmpty(SqList *&L){ return (L->length==0);}//求顺序表长度int ListLength(SqList *&L){ return (L->length);}//求线性表某个元素的值,有的话返回true,并且把值付给ebool GetElem(SqList *&L,int i,ElemType &e){ if(i<1||i>L->length) return false; e=L->data[i-1]; return true;}//按元素查找int LocateElem(SqList *L,ElemType e){ int i; while(i<L->length &&L->data[i]!=e) i++; if(i>L->length) return 0; else return i+1;}//插入数据元素bool ListInsert(SqList *&L,int i,ElemType e){ int j; if(i<0||i>L->length+1) return false; for(j=L->length;j>i;j--) L->data[j]=L->data[j-1]; L->data[i]=e; L->length++; return true;}//删除数据元素bool DeleList(SqList *&L,int i,ElemType &e){ int j; if(i<1||i>L->length) return false; for(j=i-1;j<L->length;j++) L->data[j]=L->data[j+1]; L->length--; return true;}//显示顺序表void DispList(SqList *&L){ int l=0; while(l!=L->length) { cout<<L->data[l]<<" "; l++; } cout<<endl;}编译结果
阅读全文
0 0
- 数据结构 第二周(3)程序的多文件组织
- 数据结构第二周项目2--程序的多文件组织
- 数据结构第二周项目--程序的多文件组织
- 数据结构第二周项目-程序的多文件组织
- 第二周。程序的多文件组织
- 第二周项目 - 程序的多文件组织
- 第二周项目:程序的多文件组织
- 第二周项目程序的多文件组织
- 第二周项目--程序的多文件组织
- 第二周项目:程序的多文件组织
- 第二周 程序的多文件组织
- 第二周 程序的多文件组织
- 第二周项目--程序的多文件组织
- 第二周 程序的多文件组织
- 第二周项目3---程序的多文件组织
- 第二周项目 3 程序的多文件组织
- 第二周项目3-程序的多文件组织
- (第二周项目2)程序的多文件组织
- 解决nginx不支持pathinfo办法
- 第978期机器学习日报(2017-05-23)
- ORA-16456错误,由于备库未mount而在主库执行切换,解决办法详解
- 关于 LTE 中 EPS sessions 和 EPS bearers 的 ID
- 笨方法学习Python-习题8:打印,打印
- 数据结构 第二周(3)程序的多文件组织
- 第983期机器学习日报(2017-05-28)
- 第一个博客
- 第三周——建设“顺序表”算法库
- 第八周项目一—建立顺序串的算法库
- web前端 —— 移动端知识的一些总结
- JAVA中的Token 基于Token的身份验证
- 第984期机器学习日报(2017-05-29)
- 第985期机器学习日报(2017-05-30)