代码目录
- 第一章 绪论
-
- 三元组的实现
-
- c1.h 万能头文件
- c1-1.h
- bo1-1.cpp
- main1-1.cpp
- 区分引用类型和非引用类型(注:必须保存为c++后缀即:.cpp)
-
- algo1-3.cpp
- exit的作用
-
- algo1-4.cpp
- 记录程序运行时间
- 第二章 线性表
- 第三章 栈和队列
- 第四章 串
- 第五章 数组和广义表
- 第六章 树和二叉树
- 第七章 图
- 第八章 动态存储管理
- 第九章 查找
- 第十章 内部排序
- 第十一章 外部排序
- 第十二章 文件
第一章 绪论
三元组的实现
c1.h 万能头文件
#include<string.h>
#include<ctype.h>
#include<malloc.h>
#include<limits.h>
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#include<math.h>
#include<process.h>
#include<iostream>
using namespace std;#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1typedef int Status;//函数返回类型
typedef int Boolean;//布尔类型
typedef int ElemType;
c1-1.h
typedef ELemType *Tripelet;
bo1-1.cpp
#include "c1.h"
#include "c1-1.h"Status InitTriplet(Triplet &T,ElemType v1,ElemType v2,ElemType v3)
{
if(!(T=(ElemType *)malloc(3*sizeof(ElemType))))exit(OVERFLOW);T[0]=v1,T[1]=v2,T[2]=v3;return OK;
}
Status DestroyTriplet(Triplet &T)
{
free(T);T=NULL;return OK;
}
Status Get(Triplet T,ElemType &e,int i)
{
if(i<1||i>2)return ERROR;e=T[i-1];return OK;
}
Status Put(Triplet &T,ElemType e,int i)
{
if(i<1||i>2)return ERROR;T[i-1]=e;return OK;
}
Status IsAscending(Triplet T)
{
return T[0]<T[1]&&T[1]<T[2];
}
Status IsDecending(Triplet T)
{
return T[0]>T[1]&&T[1]>T[2];
}
Status Max(Triplet T,ElemType &e)
{
e=T[0]>T[1]?T[0]>T[2]?T[0]:T[2]:T[1]>T[2]?T[1]:T[2];return OK;
}
Status Min(Triplet T,ElemType &e)
{
e=T[0]<T[1]?T[0]<T[2]?T[0]:T[2]:T[1]<T[2]?T[1]:T[2];return OK;
}
main1-1.cpp
#include"c1.h"
#include"c1-1.h"
#include"bo1-1.cpp"int main()
{
Triplet T;ElemType m;Status i;i=InitTriplet(T,5,7,9);printf("调用初始化函数后,i=%d(1:成功) T的3个值为",i);cout<<T[0]<<' '<<T[1]<<' '<<T[2]<<endl;int j=2;i=Get(T,j,m);if(i==OK){
cout<<"T的第二个值为"<<m<<endl;}i=Put(T,2,6);if(i==OK)cout<<"将T的第2个值改为6后,T的3个值为 "<<T[0]<<' '<<T[1]<<' '<<T[2]<<endl;i=IsAscending(T);printf("调用升序函数后,是否成功? %d\n",i);i=IsDecending(T);printf("是否为降序?%d\n",i);j=Max(T,m);printf("最大值为:%d\n",m);j=Min(T,m);printf("最小值为:%d\n",m);i=DestroyTriplet(T);if(i)printf("成功销毁");else{
printf("未能成功销毁");}return 0;
}
区分引用类型和非引用类型(注:必须保存为c++后缀即:.cpp)
algo1-3.cpp
#include<stdio.h>
void fa(int a)
{
a++;printf("在函数fa中:a=%d\n",a);
}
void fb(int &a)
{
a++;printf("在函数fb中:a=%d\n",a);
}
int main()
{
int n=1;printf("在主程序中,调用函数fa之前:n=%d\n",n);fa(n);printf("在主程序中,调用函数fa之后,fb之前:n=%d\n",n);fb(n);printf("在主程序中,调用函数fb之后:n=%d\n",n);return 0;
}
exit的作用
algo1-4.cpp
#include"c1.h"int a(int i)
{
if(i==1){
printf("退出程序的运行\n");exit(0);//里面的值0代表正常退出运行,值为1则代表异常退出运行}return i;
}int main()
{
int i;printf("请输入i: ");scanf("%d",&i);printf("a(i)=%d\n",a(i));return 0;
}
记录程序运行时间
一般的方法是使用time.h头文件中的clock()函数
#include<stdio.h>
#include<time.h>
int main()
{
clock_t begin,end;begin = clock();for(int i=0;i<100000000;++i);//可替换为待检测的程序end = clock();printf("%lf",(double)(end-begin)/CLOCKS_PER_SEC);return 0;
}
另一种方法是调用sys/timb.h头文件
#include<stdio.h>
#include<sys/timeb.h>
int main()
{
timeb t1,t2;long t;ftime(&t1);for(int i=1;i<1000000000;++i);ftime(&t2);t=(t2.time-t1.time)*1000+(t2.millitm-t1.millitm);printf("用时%ld毫秒\n",t);return 0;
}