第二周项目(2)-程序的多文件组织

来源:互联网 发布:数据库服务器cpu 要求 编辑:程序博客网 时间:2024/05/19 00:36

问题及代码:

程序的多文件组织最显著地表现在多个文件,main函数与普通函数的分割上。

首先 main.cpp 文件既头文件:

/**Copyright(c) 2017,YTU CS *All right reserved. *作    者:王铭泽. *完成日期:2017,9,14 *版 本 号: v1.0 * *问题描述: 工程需要多个层次来包含不同类型的文件,所以程序的多文件组织是很有必要的。 */#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;}
main.cpp里是对多个函数的调用,而调用的源文件便是存放在file.h已经file.cpp里的函数。


其次既 file.h与file.cpp文件:

(.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
(.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;}

运行结果对不同的函数调用来说是不同的,在此举一部分函数为例的结果截图:



知识点总结与注意事项:

文件的组织在大体上是有固定的结构的,特定的文件类型存放指定的程序。

注意在声明和调用函数时的文件声明应该与当前文件在同一目录下。如:




当头文件不在工程里的时候需要在调用时通过命令号指令写出相对路径,既代码中的 #include"../file.h"。




阅读全文
0 0
原创粉丝点击