第五章 设计心得体会
1.准备越充分,实验越顺利。古人云,磨刀不误砍柴工。前期的知识储备、文献储备、材料准备、方法准备可以避免手忙脚乱,充分的预实验使你充满信心。一步一个脚印,就不必“从头再来”。最不能容忍的是在开始的几步偷懒,造成后面总有一些无法排除的障碍。
2.交流是最好的老师做实验遇到困难是家常便饭。你的第一反应是什么?反复尝试?放弃?看书?这些做法都有道理,但首先应该想到的是交流。对有身份的人,私下的请教体现你对他的尊重;对同年资的人,公开的讨论可以使大家畅所欲言,而且出言谨慎。千万不能闭门造车。一个实验折腾半年,后来别人告诉你那是死路,岂不冤大头?
3.一半时间做实验,一半时间看文献。
千万不能把时间全部消耗在实验台上。看文献、看书、看别人的操作、听别人的经验、研究别人的思路,边做边思考。要学会比较,不要盲从。否则,会被一些小小的问题困扰许久。
8
附录1 程序源代码
#include\#include\#include\#include\///#include\#include
/************************************* 空闲区结构体定义
start_location 空闲区对象变量的开始位置 free_number 空闲区块数目 next 指向下一个空闲区的指针
**************************************/
typedef struct node{
/************************************* 申请空间作业结构体定义 office[] 作业名
begin_location 作业申请空间后的开始位置 office_number 作业申请空间区的数目 next 指向下一个申请空闲区的作业指针 **************************************/
9
int start_location; int free_number; struct node*next; }free_link;
typedef struct link{
/************************************** 相关位示图操作的结构体定义 p 空间区链表指针 q 作业链表指针
***************************************/ typedef struct {
free_link *p; office *q; char office[20]; int begin_location; int office_number; struct link *next; }office;
}work;
/*************************************** 程序菜单
****************************************/ void menu(){ }
/*************************************** 置空位示图进行初始化
****************************************/ void zero_wst(){
10
printf(\文件的存取和回收\\n\printf(\分配文件\\n\printf(\回收文件\\n\printf(\退出\\n\\t\printf(\请输入选项: \
}
int i;
for(i=0;i<256;i++)
WST[i]=0;
/****************************************
位示图输出显示将初始化或者申请或者回收后的位示图进行显示 *****************************************/ void print_wst(int WST[256]){ }
/************************************** 已经申请空间的作业相关情况输出显示 包括:作业名申请空间的开始位置和截至位置 ***************************************/ void print_office(work *w){
int i,j=0; printf(\for(i=0;i<16;i++)
printf(\
printf(\printf(\for(i=0;i<256;i++){ }
printf(\
j++;
printf(\if(j==0&&i!=0&&j!=256){ }
printf(\printf(\
office *q;
11
q=w->q; q=q->next; if(q!=NULL){
printf(\已有文件:\\n\
while(q!=NULL){
printf(\fice_number-1); }
/************************************* 位示图操作的初始化 包括:空闲区链表的初始化
作业链表的初始化 }
}
q=q->next;
**************************************/ work *start(){
free_link *p; office *q; work *w;
w=(work *)malloc(sizeof(work));
p=(free_link*)malloc(sizeof(free_link)); p->start_location=0; p->free_number=256; p->next=NULL;
q=(office *)malloc(sizeof(office)); q->next=NULL; w->p=p; w->q=q; return w;
12