当前位置:文档之家› 预测分析表程序报告

预测分析表程序报告

预测分析表程序报告
预测分析表程序报告

课程实验报告

课程名称:编译原理教程

实验项目名称:预测分析表方法

专业班级:*******

姓名:******

学号:***********

指导教师:*******

完成时间:2011 年** 月** 日计算机科学与工程系

实验7-8 预测分析表方法

一、实验目的

理解预测分析表方法的实现原理。

二、实验内容:

编写一通用的预测法分析程序,要求有一定的错误处理能力,出错后能够使

程序继续运行下去,直到分析过程结束。可通过不同的文法(通过数据表现)进

行测试。

三、实验内容提示

1.算法数据构造:

(1)预测分析表的构造方法1

构造正规式数组:char P[10][10]={“E->TE’”,”E’->+TE’”,……..}; (正规式可只存储右半部分,如E->TE’可存储为TE’,正规式中的符号可替换,

如可将E’改为M )

构造预测分析表:int analyze_table[10][10]={ } //数组元素值

存放正规式的编号,-1表示出错

(2)预测分析表的构造方法2

可使用三维数组

Char analyze_table[10][10][10]={}或Char *analyze_table[10][10]={ }

2.针对预测分析表构造方法1的查预测分析表的方法提示:

(1)查非终结符表得到非终结符的序号no1

(2)查终结符表得到终结符的序号no2

(3)根据no1和no2查预测分析表得到对应正规式的序号no3=analyze_table[no1][no2] ,如果no3=-1 表示出错。

(4)根据no3查找对应的正规式Fa[no3]

(5)对正规式进行处理

3.错误处理机制

紧急方式的错误恢复方法(抛弃某些符号,继续向下分析)

(1)栈顶为非终结符A,串中当前单词属于FOLLOW(A),则从栈中弹出A (此时可认为输入串中缺少A表示的结构),继续分析。---------错误编号为1 (2)栈顶为非终结符A,串中当前单词不属于FOLLOW(A),则可使串指针

下移一个位置(认为输入串中当前单词多余),继续分析。----------错误编号

为2

(3)栈顶为终结符,且不等于串中当前单词,则从栈中弹出此终结符(认

为输入串中缺少当前单词)或者将串指针下移一个位置(认为串中当前单词多余)。在程序中可选择上述两种观点中的一种进行处理。-------------错误编

号3

4.增加了错误处理的预测分析程序预测分析程序的算法:

将“#”和文法开始符依次压入栈中;

把第一个输入符号读入a;

do{

把栈顶符号弹出并放入x中;

if(x∈VT)

{if(x==a) 将下一输入符号读入a;

else error(3);}

else

if(M[x,a]=“x→y1y2…yk”)

{按逆序依次把yk、yk?1、…、y1压入栈中;

输出“x→y1y2…yk”;}

else if a follow(x)error(1); else error(2);

}while(x!=“#”)

三.实验要求

给定算术表达式文法,编写程序。

测试数据:

1.算术表达式文法

E→TE’

E’→ +TE’|- TE’|ε

T→FT’

T’→*FT’ |/ FT’ |%FT’|ε

F→(E) |id|num

给定一符合该文法的句子,如id+id*id$,运行预测分析程序,给出分

析过程和每一步的分析结果。

2.作业3.10 文法

四.方法实现

源程序:

#include

#include

#include

#include

using namespace std;

#define MAXSIZE 100

typedef char DataType;

typedef struct //定义栈

{

DataType data[MAXSIZE];

int top;

}SeqStack;

SeqStack *s;

int sign=0;

int num1,num2,num3;

char VN[10][5]={"E","M","T","N","F"};//非终结符表

int length_vn=5;//非终结符个数

char

VT[15][5]={"+","-","*","/","%","(",")","i","n", "#"};//终结符表

int length_vt=10; //终结符个数

char

Fa[15][5]={"TM","+TM","-TM","","FN",""," *FN","/FN","%FN","(E)","i","n"};//产生式表1:E->TM,2:M->+TM,3:M->-TM,4:M-> ,5:E->FN,6:N-> ,7:N->*FN,8:F->/FN,9:F->%FN,1 0:F->(E),11:F->i,12:f->n

//M=E',N=T',i=id,n=num

Char

Pa[15][10]={"E->TM","M->+TM","M->TM", "M->空","T->FN","N->空","N->*FN","F->/FN","F->%FN","F->(E)","F ->id","F->num"};

int analysis_table[10][11]={

{-1,-1,-1,-1,-1,1,-2,1,1,-1,0},

{2,3,-1,-1,-1,-1,4,-1,-1,4,0},

{-2,-2,-1,-1,-1,5,-2,5,5,-1,0},

{6,6,7,8,9,-1,6,-1,-1,6,0},

{-2,-2,-2,-2,-2,10,-2,11,12,-1,0}

};//预测分析表

/*char VT[15][5]={"a","b","d","l","#"};

int length_vt=5;

char VN[10][5]={"A","C","B","D"};

int length_vn=4;

char

Fa[15][5]={"aC","ABl","","dD","bD",""}; char Pa[15][10]={"A->aC","C->ABl","C->空","B->dD","D->bD","D->空"};

int analysis_table[4][5]={

{1,-1,-2,-1,-1},

{2,-1,3,-1,3},

{-1,-1,4,-2,-1},

{-1,5,-1,6,-1},

};*/

SeqStack *Init_SeqSTACK()//栈初始化{

//SeqStack *s;

s=new SeqStack;

if(!s)

{

printf("空间不足\n");

return NULL;

}

else

{

s->top=-1;

return s;

}

}

void Push_SeqStack(SeqStack *s,char x)//入栈

{

if (s->top==MAXSIZE-1)

printf("栈满,不能入栈!");//return 0;

else

{

s->top++;

s->data[s->top]=x;

//return 1;

}

}

char Pop_SeqStack(SeqStack *s)//出栈{

if(s->top==-1)

{

printf("栈空,不可出栈!");// return 0;

exit(0);

}

else

{

char x=s->data[s->top];

s->top--;

return x;

}

}

DataType Top_SeqStack(SeqStack *s) //取

栈顶元素

{

if(s->top==-1)

return 0;

else

return s->data [s->top ];

}

int BufVT(char s) //接收终结符并保存在VT[]数组中

{

int i=0;

while(i<15&&s!='\n')

{

if(VT[i][0]==s)

return 1;

else

i++;

}

return 0;

}

int BufVN(char s) //接收非终结符并保存在VN[]数组中

{

int i=0;

while(i<10&&s!='\n')

{

if(VN[i][0]==s)

return 1;

else

i++;

}

return 0;

}

int VTT(char s) //终结符匹配

{

int i=0;

while((VT[i][0]!=s))

i++;

return i; }

int VNN(char s) //非终结符匹配

{

int i=0;

while(VN[i][0]!=s&&i

{

i++;

}

if(i==length_vn)

return -1;

return i;

}

void Error(int errornum,char x)

{

if(errornum==1)

{

printf("第一种错误,弹出栈顶元素\n");

Pop_SeqStack(s);

}

else if(errornum==2)

printf("第二种错误,跳过%c\n",x);

else

{

if(x='#')

{

printf("第三种错误,弹出栈顶元素\n");

Pop_SeqStack(s);

}

else

{

printf("第三种错误,指针下移弹出栈顶元素\n");

Pop_SeqStack(s);

sign++;

}

}

}

void main()

{

char str1[20],str2[20];

int i=0;

printf("请输入所要分析的文件名:");

scanf("%s",str1);

FILE *fp;

if((fp=fopen(str1,"r"))==NULL)

{

printf("没有这个文件!\n");

exit(0);

}

while(!feof(fp))

{

str2[i]=fgetc(fp);

i++;

}

str2[i]='\0';

fclose(fp);

Init_SeqSTACK();

s->top=-1;

Push_SeqStack(s,'#');

Push_SeqStack(s,'E');

char x;

printf("语法分析过程如下:\n");

printf("栈顶元素\t\t当前单词记号\t\t 动作\n");

printf("============================ ================================= =======\n");

do

{

x=Top_SeqStack(s);

if(x=='#')

goto loop;

else

{

if(!BufVT(str2[sign])&&!BufVN(x))

{

printf("%c\t\t\t%s\t\t\t%s",x,str2[sign]);

printf("当前字符不合法!\n");

}

else if(BufVT(str2[sign]))

{

if(x==str2[sign])

{

printf("%c\t\t\t%c\t\t\t",x,str2[sign]);

printf("匹配终结符%c\n",str2[sign]);

Pop_SeqStack(s);

sign++;

}

else

{

BufVN(x);

num1=VTT(str2[sign]);

num2=VNN(x);

char arr[10];

if(num2!=-1)

{

num3=analysis_table[num2][num1];

if(num3==-1)

{

printf("%c\t\t\t%c\t\t\t",x,str2[sign]);

Error(1,x);

}

if(num3==-2)

{

printf("%c\t\t\t%c\t\t\t",x,str2[sign]);

Error(2,str2[sign]);

sign++;

}

else

{

printf("%c\t\t\t%c\t\t\t",x,str2[sign]);

printf("展开非终结符%s,继续\n",Pa[num3-1]);

Pop_SeqStack(s);

int j;

for(j=0;j<5&&Fa[num3-1][j]!='\0';j++)

{

arr[j]=Fa[num3-1][j];

}

int k;

k=j-1;

for(;k>=0;k--)

{

Push_SeqStack(s,arr[k]);

}

}

}

else

{

printf("%c\t\t\t%c\t\t\t",x,str2[sign]);

Error(3,str2[sign]);

//Pop_SeqStack(s);

}

}

}

}

}while(x!='#');

loop:

printf("%c\t\t\t%c\t\t\t",x,str2[sign]);

printf("结束\n");

exit(0);

}

实验结果:

1.文法一:

文法一正确结果

文法一正确句子

文法一错误处理

文法一错误句子2. 3.10文法:

3.10文法

3.10文法

五、体会:

链表实验报告

C语言程序设计实验报告 实验一:链表的基本操作一·实验目的 1.掌握链表的建立方法 2.掌握链表中节点的查找与删除 3.掌握输出链表节点的方法 4.掌握链表节点排序的一种方法 5.掌握C语言创建菜单的方法 6.掌握结构化程序设计的方法 二·实验环境 1.硬件环境:当前所有电脑硬件环境均支持 2.软件环境:Visual C++6.0 三.函数功能 1. CreateList // 声明创建链表函数 2.TraverseList // 声明遍历链表函数 3. InsertList // 声明链表插入函数 4.DeleteTheList // 声明删除整个链表函数 5. FindList // 声明链表查询函数 四.程序流程图 五.程序代码 #include #include typedef int Elemtype; typedef int Status; typedef struct node//定义存储节点 { int data;//数据域 struct node *next;//结构体指针 } *linklist,node;//结构体变量,结构体名称 linklist creat (int n)//创建单链表 { linklist head,r,p;//定义头指针r,p,指针 int x,i; head=(node *)malloc(sizeof(node));//生成头结点

r=head;//r指向头结点 printf("输入数字:\n"); for(i=n;i>0;i--)//for 循环用于生成第一个节点并读入数据{ scanf("%d",&x); p=(node *)malloc(sizeof(node)); p->data=x;//读入第一个节点的数据 r->next=p;//把第一个节点连在头结点的后面 r=p;//循环以便于生成第二个节点 } r->next=0;//生成链表后的断开符 return head;//返回头指针 } void output (linklist head)//输出链表 { linklist p; p=head->next; do { printf("%3d",p->data); p=p->next; } while(p); printf("\n") } Status insert ( linklist &l,int i, Elemtype e)//插入操作 { int j=0; linklist p=l,s; while(jnext; ++j; } if(!p || j>i-1) return -1; else { s=(node *)malloc(sizeof(node)); s->data=e; s->next=p->next; p->next=s; return 1; } } Status delect ( linklist &l,int i, Elemtype &e)//删除操作 { int j=0; linklist p=l,q; while(jnext) { p=p->next; ++j; } if(!p->next || j>i-1) return -1;

2016年产品质量情况分析报告

2016年产品质量情况分析报告

2016年产品质量状况分析报告 质量管理部 质量是企业的生命。近年来,随着公司技改开发的大力投入,产业布局的系统优化和整合完善,形成了以202车间为代表的南方矿分离体系和以204车间焙烧工序为龙头、201车间萃取分离工序为承接、218车间沉淀煅烧为收尾的北方矿分离体系,形成了稀土加工分离、稀土金属、稀土研磨材料、稀土贮氢材料、稀土磁性材料、稀土发光材料、氯碱化工等七大产业链。公司严把质量关,从原材料的入厂、中间品的控制到产成品出厂都严格按内部标准执行,在各工序间制定了质量控制标准,细化了关键岗位控制标准,编制了质量岗位巡视路线图,强化质量巡视工作,从而使公司的产品质量有了较明显的提升,确保了公司在市场中的竞争力。下面就公司产品质量做如下具体分析: 一、原材料方面 目前公司所用稀土原料全部来自外购,南方矿多采购自江西和广东,稀土总量为92%左右,稀土配分、放射性大小由于产地不同存在一定的差异,202车间在萃取分离过程中及时调整萃取工艺指令同时做好镧产品中放射性的去除工作;北方矿主要为包头高矿,兼顾山东矿和四川矿,矿型差异较大,204车间联合研究所做好实验工作,研究焙烧工艺,做好各类矿型混合焙烧的技术策划;碳铵做为公司沉淀工序的重要原料,由于市场原因,采购自不同厂家,2016年合格率为89.69%,不合格原因除总量偏低外,不同厂家的产品对沉淀过程

液、镧铈液、镨钕液稀土组分不合格的主要原因受生产工艺影响,在萃取稀土过程中,温度、酸度、流量等条件稍微控制不当,容易使产品配分引起波动。产品中非稀土杂质超标的主要原因是201车间高纯线除杂不彻底,下游218车间需加强在沉淀环节和煅烧环节对稀土杂质的控制,及时调整生产工艺,关注外接稀土料液、生产用水、沉淀剂碳铵中Fe、CaO、Mg、Na、等非稀土杂质的含量以及生产设备、搅拌装置等腐蚀程度对产品质量的影响,车间生产技术人员在追求稀土产品相对纯度满足的前提下应足够重视对非稀土杂质的控制。三、产成品方面 202车间2016年产品一次合格率为99.82%,较2015年上升 0.65%,产品质量有明显提升;218车间2016年产品一次合格率为99.95%,较2015年上升0.05%,产品质量与2015年基本持平;205车间、磁材车间、贮氢车间、应用型产品质量一次合格率均为100%;金属车间2016年产品一次合格率为96.31%,较2015年降低1.5%,产品质量有所下降。其中202车间氧化钆松装比重不合格,主要原因是沉淀过程控制不当,在今后的生产过程中要把单纯控制产品化学指标转变为为产品晶形晶貌的控制;218车间氧化镨钕稀土杂质La2O3不合格,主要原因为为转产前未彻底清理炉膛导致煅烧过程污染使产品中组分La2O3超标,在今后的生产过程中车间技术人员应提高质量意识,做好生产前的质量策划;金属镧、金属铈、金属钕、镧铈金镨钕金属中稀土杂质AL、C、Si、Mo等超标,主要原因电解过程控制

《数据结构》实验报告 设计循环单链表

《数据结构》实验报告 1、实验名称:设计循环单链表 2、实验日期: 2013-3-26 3、基本要求: 1)循环单链表的操作,包括初始化、求数据元素个数、插入、删除、取数据元素; 2)设计一个测试主函数实际运行验证所设计循环单链表的正确性。 4、测试数据: 依次输入1,2,3,4,5,6,7,8,9,10,删除5,再依次输出数据元素。 5、算法思想或算法步骤: 主函数主要是在带头结点的循环单链表中删除第i个结点,其主要思想是在循环单链表中寻找到第i-1个结点并由指针p指示,然后让指针s指向a[i]结点,并把数据元素a[i]的值赋给x,最后把a[i]结点脱链,并动态释放a[i]结点的存储空间。 6、模块划分: 1)头文件LinList.h。头文件LinList.h中包括:结点结构体定义、初始化操作、求当前数据个数、插入一个结点操作、删除一个结点操作以及取一个数据元素操作; 2)实现文件dlb.cpp。包含主函数void main(void),其功能是测试所设计的循环单链表的正确性。

7、数据结构: 链表中的结点的结构体定义如下: typedef struct Node { DataType data; struct Node *next; }SLNode; 8、源程序: 源程序存放在两个文件中,即头文件LinList.h和实现文件dlb.cpp。//头文件LinList.h typedef struct Node { DataType data; struct Node *next; }SLNode; void ListInitiate(SLNode **head) //初始化 { *head=(SLNode *)malloc(sizeof(SLNode)); //申请头结点,由head指示其地址 (*head)->next=*head; }

单链表实验报告

计算机与信息技术学院综合性、设计性实验报告 一、实验目的 (1)熟悉顺序表的创建、取值、查找、插入、删除等算法,模块化程序设计方法。 二、实验仪器或设备 (1)硬件设备:CPU为Pentium 4 以上的计算机,内存2G以上 (2)配置软件:Microsoft Windows 7 与VC++6.0 三、总体设计(设计原理、设计方案及流程等) 设计原理: 单链表属于线性表,线性表的存储结构的特点是:用一组任意存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。因此,对于某个元素来说,不仅需要存储其本身的信息,还需要存储一个指示其直接后继的信息。 设计方案: 采用模块化设计的方法,设计各个程序段,最终通过主函数实现各个程序段的功能。设计时,需要考虑用户输入非法数值,所以要在程序中写入说可以处理非法数值的代码。 设计流程: 1. 引入所需的头文件; 2. 定义状态值; 3. 写入顺序表的各种操作的代码; 写入主函数,分别调用各个函数。在调用函数时,采用if结构进行判断输 入值是否非法,从而执行相应的程序 四、实验步骤(包括主要步骤、代码分析等) #include // EOF(=A Z 或F6),NULL #in clude // srand( ) ,rand( ),exit (n) #in clude // malloc( ),alloc( ),realloc() 等 #in clude // INT_MAX 等 #in clude #in clude #in clude // floor(),ceil( ),abs() #in clude // cout,ci n #in clude // clock( ),CLK_TCK,clock_t #defi ne TRUE 1 #defi ne FALSE 0 #defi ne OK 1 #defi ne ERROR 0 #defi ne INFEASIBLE -1

企业质量管理情况报告

企业质量管理情况报告

XXX公司企业质量管理情况报告公司简介:略。公司重视产品质量,坚持推行科学的管理方式。多年来,公司在产品生产过程中建立GMP良好操作规范、HACCP食品安全管理体系和ISO9000质量管理标准、ISO14000环境管理标准、GB/T28001职业健康安全标准,并保证各种管理体系有效运行。这些管理体系先后通过中国检验认证集团质量认证有限公司认证审核并颁发证书。同时,公司还获得中华人民共和国卫生注册证书和QS认证证书。企业质量管理情况报告总结如下: 1、公司质量管理机构总经理品管部开发部品管室化验室质量管理机构图公司专职质量管理人员共计36人,应经培训考核合格领取相关资质证件的特殊工作操作员工人员均已持证上岗。此外各部门主管、生产技术骨干等人员还以参加HACCP小组、食品安全小组、内部审核员等方式参与质量管理。 2、在质

量管理体系运行方面做的主要工作 2.1、健全企业质量体系管理文件,强化持续运行公司自2000年引入全面质量管理体系后,我们立即组织从事过技术质量管理的相关技术骨干并聘请中国检验认证集团质量认证有限公司、采纳所等资深 体系管理人员策划健全本公司的质量管理体系。我们在正常运行公司的《管理手册》、《程序文件》、《SSOP》、《GMP良好操作规范》、《HACCP 食品安全管理体系》、《ISO9000质量管理标准》、《ISO14000环境管理标准》、《GB/T28001职业健康安全标准》等适用于本公司管理性文件基础上,明确了企业的质量方针和管理目标,健全了公司各类人员的质量职责,将企业质量目标进行分解并实施考核。在此同时我们还建立了企业标准体系、系列作业指导书等质量管理体系文件,并坚持贯彻实施,通过颁布和实施相关质量体系管理文件使公司质量工作逐步迈上制度化、标准化、规范化轨道。 2.2、健全产品技术文件,强化标准执行我们认识到,要制造出成批的合格产品,采用科学合理的工艺技术是生产、质量管理的关键。公司生产技术部门及品质管理部门紧紧围绕以落实国家行业标准和产品技术标准为

单链表的插入和删除实验报告

. 实验一、单链表的插入和删除 一、目的 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 二、要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 三、程序源代码 #include"stdio.h" #include"string.h" #include"stdlib.h" #include"ctype.h" typedef struct node //定义结点 { char data[10]; //结点的数据域为字符串 struct node *next; //结点的指针域 }ListNode; typedef ListNode * LinkList; // 自定义LinkList单链表类型 LinkList CreatListR1(); //函数,用尾插入法建立带头结点的单链表

ListNode *LocateNode(); //函数,按值查找结点 void DeleteList(); //函数,删除指定值的结点void printlist(); //函数,打印链表中的所有值 void DeleteAll(); //函数,删除所有结点,释放内存 //==========主函数============== void main() { char ch[10],num[10]; LinkList head; head=CreatListR1(); //用尾插入法建立单链表,返回头指针printlist(head); //遍历链表输出其值 printf(" Delete node (y/n):");//输入“y”或“n”去选择是否删除结点scanf("%s",num); if(strcmp(num,"y")==0 || strcmp(num,"Y")==0){ printf("Please input Delete_data:"); scanf("%s",ch); //输入要删除的字符串 DeleteList(head,ch); printlist(head); } DeleteAll(head); //删除所有结点,释放内存 } //==========用尾插入法建立带头结点的单链表

安全质量工作开展情况汇报解析

安全质量情况工作总结 本项目在上级有关单位的领导及支持下,牢固树立“安全第一,预防为主,综合治理”的总体方针,始终坚持以人为本的安全生产理念,以实现项目、公司安全生产目标为核心,以落实各项安全规章制度及措施为途径,经过全体员工的共同努力,项目安全工作上取得了一定的成果,为项目营造了一个安定、和谐的施工环境,确保了施工安全顺利进行。现就安全质量工作总结如下: 1、安全质量工作综合开展情况 1.1安全质量保证体系建设情况 1.1.1安全质量生产组织机构保证 开工以来,项目部就按照“抓生产必须抓安全”的原则,成立了以项目经理为组长、安全总监总体负责和分管领导、部室负责人组成的安全管理领导小组。 1.1.2工作保证 安质部代表项目部行使各项安全管理工作。目前项目部有专职安全员1人、质检员2人,各班组设置了兼职安全员及群众安全员负责工序过程的安全监控和管理,从工序过程上加强了安全控制。 1.1.3、制度及措施保证 为确保安全管理工作有章可循、有据可查,安质环保部编制了符合现场实际情况的各项安全质量规章制度及措施(其中安全管理实施细则26个,质量管理制度19个),并严格按照制度及措施执行,落实到了现场,

贯彻执行到了工班组。为项目安全生产及质量控制提供了前提条件。 1.2安全质量生产责任制落实情况 项目部本着“一岗双责,岗岗有责”的原则,建立健全了安全生产责任制。以项目经理牵头,项目安全总监全面负责安全工作,下属部门安质部具体负责安全生产的落实。各职能部门、各作业队按照‘安全生产,人人有责’的原则,相互协作,密切配合。落实情况如下: 1.2.1与项目部5部2室签订了安全质量责任书7份,同项目各级安全管理人员及岗位人员签定了安全质量承诺书32份,作业人员递交安全质量责任承诺卡30份。 1.2.2项目领导及工程部、安质部、办公室、物机部等相关人员组成了安全责任履职考核领导小组,每季度考核一次,考核对象为项目各级管理人员,考核结果与员工绩效挂钩,坚决实行安全“一票否决制”。 1.3现场质量控制工作开展情况 1.3.1树立质量管控目标 (1)工程质量合格率100%,工程竣工交验合格率100%; (2)工程质量达到优良等级,争创省市级优质工程。 1.3.2、专职质检人员配备齐全 设有专职质量管理人员:王玉玺、张秀文作为本项目质检员,并取得相应证件。 1.3.3工程质量日常检查开展 为加强过程控制,项目部除每月20日由项目经理组织,项目副经理,总工程师、安全总监、经理部工程、安质、物机、试验等部门参加联合进

数据结构实验报告单链表

数据结构实验报告单链 表 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

2016级数据结构实验报告 实验名称:实验一线性表——题目1 学生姓名:李文超 班级: 班内序号: 15 学号: 47 日期: 2016年11月13日 1.实验要求 实验目的: 根据线性表的抽象数据类型的定义,选择下面任一种链式结构实现线性表,并完成线性表的基本功能。 线性表存储结构(五选一): 1、带头结点的单链表 2、不带头结点的单链表 3、循环链表 4、双链表 5、静态链表 线性表的基本功能: 1、构造:使用头插法、尾插法两种方法 2、插入:要求建立的链表按照关键字从小到大有序

3、删除 4、查找 5、获取链表长度 6、销毁 7、其他:可自行定义 编写测试main()函数测试线性表的正确性。 2.程序分析 存储结构 单链表的存储: (1)链表用一组任意的存储单元来存放线性表的结点。这组存储单元既可以是连续的,也可以是不连续的,甚至零散地分布在内存的某些位置。 (2)链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个元素值的同时,还要存储该元素的直接后继元素的位置信息,这个信息称为指针或链。 结点结构 ┌──┬──┐ data域---存放结点值的数据域 │data│next│ next域---存放结点的直接后继的地址的指针域└──┴──┘? 单链表在内存中的存储示意 地址内存单元

1000H 头指针 1020H 1080H 10C0H ………… 关键算法分析 1、关键算法: (1)头插法 自然语言描述: a:在堆中建立新结点 b:将a[i]写入到新结点的数据域 c:修改新结点的指针域 d:修改头结点的指针域。将新结点加入链表中 伪代码描述 a:Node * s=new Node b:s->data=a[i] c:s->next=front->next; d:front->next=s (2)尾插法 自然语言描述: a:在堆中建立新结点:

栈的操作(实验报告)

实验三栈和队列 3.1实验目的: (1)熟悉栈的特点(先进后出)及栈的基本操作,如入栈、出栈等,掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现; (2)熟悉队列的特点(先进先出)及队列的基本操作,如入队、出队等,掌握队列的基本操作在队列的顺序存储结构和链式存储结构上的实现。 3.2实验要求: (1)复习课本中有关栈和队列的知识; (2)用C语言完成算法和程序设计并上机调试通过; (3)撰写实验报告,给出算法思路或流程图和具体实现(源程序)、算法分析结果(包括时间复杂度、空间复杂度以及算法优化设想)、输入数据及程序运行结果(必要时给出多种可能的输入数据和运行结果)。 3.3基础实验 [实验1] 栈的顺序表示和实现 实验内容与要求: 编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:(1)初始化顺序栈 (2)插入元素 (3)删除栈顶元素 (4)取栈顶元素 (5)遍历顺序栈 (6)置空顺序栈 分析: 栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。 对于顺序栈,入栈时,首先判断栈是否为满,栈满的条件为:p->top= =MAXNUM-1,栈满时,不能入栈; 否则出现空间溢出,引起错误,这种现象称为上溢。 出栈和读栈顶元素操作,先判栈是否为空,为空时不能操作,否则产生错误。通常栈空作为一种控制转移的条件。 注意: (1)顺序栈中元素用向量存放 (2)栈底位置是固定不变的,可设置在向量两端的任意一个端点 (3)栈顶位置是随着进栈和退栈操作而变化的,用一个整型量top(通常称top为栈顶指针)来指示当前栈顶位置 参考程序: #include #include #define MAXNUM 20

质量分析报告

一、质量情况 1、大冲车间 一月份共生产6330固定支架39506件,其中不合格品6件,不合格率为0.02﹪。生产左货厢支撑座1834件,其中不合格品14件,不合格率为0.76﹪。2、焊接车间 焊接车间在一月份共生产左导套焊合件22947件,其中不合格品147件,不合格率为0.64﹪。 二、原因分析 1、大冲车间 大冲车间生产6330固定支架由于尺寸过小而导致产品不合格,而造成不合格的主要原因是:操作者在剪载过程中由于操作不当,定位松动而造成的尺寸超差。 同时左货厢支撑座在落料工序中,由于零件放不到位而造成零件缺陷。2、焊接车间 焊接车间在对左导套焊合件进行点焊过程中发现焊接不牢固而造成零件不合格,其主要原因是:电压不稳定,操作者也未能调好参数而造成。 三、建议采取措施 建议车间操作者、技术质量室有关人员对以上不合格情况作进一步的分析,并制订有效的纠正措施,控制不合格的再次发生或减少不合格的出现。 质检部 2007年2月03日161

一、质量情况 1、大冲车间 2月份共生产6330固定支架27025件,其中不合格品25件,不合格率为0.09﹪(1月份不合格率为0.02﹪),不合格率比1月份增加0.07个百分点。2月份的产量教1月份减少12481件。 2、小冲车间 在2月份共生产左内开臂34012件,不合格品12件,不合格率为0.04﹪;生产有左棘爪臂33010件,其中不合格品有10件,不合格率为0.03﹪。 二、原因分析 1、大冲车间 造成6330固定支架不合格主要表现为:在成型工序中对称度0.4尺寸超差,其出现的主要原因是:操作者在工作中操作不当,定位松动而造成尺寸超差。 2、小冲车间 在成型内开臂过程中,操作者由于疏忽定位未锁紧就进行操作而造成零件尺寸超差。 棘爪臂在落料过程中,零件未放到位造成零件缺陷,导致零件咬边。 三、建议采取措施 建议车间工作者在进行操作时能认真负责,尽量避免不合格品的出现。 质检部 2007年3月05日47

单链表实验报告

数据结构 课程设计 设计题目:单链表 专业班级:11软会四班 指导教师:吉宝玉 日期:2012 目录 一、实验目的 (2) 1、 (2) 2、 (2) 二、实验内容 (3)

三、实验基本要求(软、硬件) (3) 四、算法设计思想 (3) 1、 (3) 2、 (3) 3、 (3) 4、 (3) 5、 (3) 6、 (3) 7、 (3) 8、 (3) 五、算法流程图 (4) 六、算法源代码 (4) 七、运行结果 (9) 1、 (9) 2、 (10) 3、 (11) 4、 (11) 5、 (11) 6、 (12) 7、 (12) 8、 (13) 9、 (13) 八、收获及体会 (14) 一、实验目的 1、理解并掌握单链表的结构特点和相关概念; 2、学会单链表的基本操作:建立、插入、删除、查找、 输入、撤销、逆置、求前驱和后继等并实现其算法。

二、实验内容 利用头插建立一个带头结点的单链表,并用算法实现该单链表的插入、删除查找、输出、求前驱和后继、再把此单链表逆置,然后在屏幕上显示每次操作的结果当所有操作完成后能撤销该单链表。 三、实验基本要求(软、硬件) 用VC++6.0软件平台,操作系统:Windows XP 硬件:内存要求:内存大小在256MB,其他配置一般就行。 四、算法设计思想 1、定义一个创建链表的函数,通过该函数可以创建一个链表,并为下面的函数应用做 好准备。 2、定义输出链表的算法,通过对第一步已经定义好的创建链表函数的调用,在这一步 通过调用输出链表的函数算法来实现对链表的输出操作。 3、定义一个遍历查找的算法,通过此算法可以查找到链表中的每一个节点是否存在。 4、定义查找链表的每一个前驱和后继,通过定义这个算法,可以很容易的实现对链表 的前驱和后继的查找工作。 5、定义插入节点的算法,通过定义这个算法,并结合这查找前驱和后继的算法便可以 在连链表的任意位置进行插入一个新节点。 6、定义删除节点的操作,这个算法用于对链表中某个多余节点的删除工作。 7、定义一个逆置单链表的操作,通过定义这个算法,可以逆置输出单链表。 8、定义一个撤销链表的算法,这个算法用于删除单链表中的所有节点,使链表为空。

产品质量情况分析报告

产品质量情况分析报告文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]

2016年产品质量状况分析报告 质量管理部 质量是企业的生命。近年来,随着公司技改开发的大力投入,产业布局的系统优化和整合完善,形成了以202车间为代表的南方矿分离体系和以204车间焙烧工序为龙头、201车间萃取分离工序为承接、218车间沉淀煅烧为收尾的北方矿分离体系,形成了稀土加工分离、稀土金属、稀土研磨材料、稀土贮氢材料、稀土磁性材料、稀土发光材料、氯碱化工等七大产业链。公司严把质量关,从原材料的入厂 、中间品的控制到产成品出厂都严格按内部标准执行,在各工序间制定了质量控制标准,细化了关键岗位控制标准,编制了质量岗位巡视路线图,强化质量巡视工作,从而使公司的产品质量有了较明显的提升,确保了公司在市场中的竞争力。下面就公司产品质量做如下具体分析:一、原材料方面 目前公司所用稀土原料全部来自外购,南方矿多采购自江西和广东,稀土总量为92%左右,稀土配分、放射性大小由于产地不同存在一定的差异,202车间在萃取分离过程中及时调整萃取工艺指令同时做好镧产品中放射性的去除工作;北方矿主要为包头高矿,兼顾山东矿和四川矿,矿型差异较大,204车间联合研究所做好实验工作,研究焙烧工艺,做好各类矿型混合焙烧的技术策划;碳铵做为公司沉淀工序的重要原料,由于市场原因,采购自不同厂家,2016年合格率为89.69%,不合格原因除总量偏低外,不同厂家的产品对沉淀过程影响差异较大,218车间技术组积极收集实验和生产数据,确定合格供应商。

二、中间品方面 204车间车间2016年产品一次合格率为99.78%,较较2015年上升 0.24%,所产水浸液产品质量相对稳定,个别批次REO未达标、Fe 2O 3 超 标,主要原因为焙烧系统所投原料较为复杂,受201车间非皂化工段影响,下游物料交接不畅,导致焙烧工序、洗渣工序控制不稳定,204车间应强化员工操作水平,车间技术组继续摸索纯低矿分解反应最佳工艺技术条件,加强和细化生产过程工艺管理工作。 201车间2016年产品一次合格率为95.44%,较2015年降低3.42%,氯化镧液不合格指标为稀土杂质CeO2超标和非稀土杂质CaO、MgO、 Na2O、MnO2、SO42-超标;氯化铈液不合格指标为稀土La2O3超标;富铈液不合格指标为稀土组分镧铈不合格和非稀土杂质Na2O超标;镧铈液不合格指标为稀土组分镧铈不合格;氯化镨液不合格指标为稀土杂质 La2O3、CeO2、Nd2O3超标;氯化钕液不合格指标为稀土杂质La2O3、 Pr6O11超标;镨钕液不合格指标为稀土杂质Pr6O11、Nd2O3不合格。存在不合格的主要原因为非皂化工段处于试车阶段,控制技术指标需不断优化以及操作稳定性需不断提高,高纯产品中其他稀土杂质超标的主要原因是萃取工艺控制不当,相邻或性质相近的稀土元素分离系数相近,工艺技术参数调整不及时会导致在萃取分离和除杂时稀土杂质容易不断富集,对于高纯产品来说,稀土杂质未检出最好,其含量越低,质量就越有保证。富铈液、镧铈液、镨钕液稀土组分不合格的主要原因受生产工艺影响,在萃取稀土过程中,温度、酸度、流量等条件稍微控制不当,容易使产品配分引起波动。产品中非稀土杂质超标的主要原因是201

链表实验报告

链表实验报告

————————————————————————————————作者: ————————————————————————————————日期:

《数据结构》实验报告二 系别:嵌入式系统工程系班级:嵌入式11003班 学号:11160400314姓名:孙立阔 日期:2012年4月9日指导教师:申华 一、上机实验的问题和要求: 单链表的查找、插入与删除。设计算法,实现线性结构上的单链表的产生以及元素的查找、插入与删除。具体实现要求: 1.从键盘输入10个字符,产生不带表头的单链表,并输入结点值。 2.从键盘输入1个字符,在单链表中查找该结点的位置。若找到,则显示“找到了”;否则, 则显示“找不到”。 3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插 入在对应位置上,输出单链表所有结点值,观察输出结果。 4.从键盘输入1个整数,表示欲删除结点的位置,输出单链表所有结点值,观察输出结果。 5.将单链表中值重复的结点删除,使所得的结果表中个结点值均不相同,输出单链表所有结 点值,观察输出结果。 6.删除其中所有数据值为偶数的结点,输出单链表所有结点值,观察输出结果。 7.(★)将单链表分解成两个单链表A和B,使A链表中含有原链表中序号为奇数的元素, 而B链表中含有原链表中序号为偶数的元素,且保持原来的相对顺序,分别输出单链表A和单链表B的所有结点值,观察输出结果。 二、程序设计的基本思想,原理和算法描述: (包括程序的结构,数据结构,输入/输出设计,符号名说明等) 创建一个空的单链表,实现对单链表的查找,插入,删除的功能。 三、源程序及注释: #defineOK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define TRUE 1

数据结构实验报告 - 答案汇总

数据结构(C语言版) 实验报告

专业班级学号姓名 实验1 实验题目:单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤: 1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测试程序 的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序: (1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码: #include"stdio.h" #include"string.h" #include"stdlib.h" #include"ctype.h" typedef struct node //定义结点 { char data[10]; //结点的数据域为字符串 struct node *next; //结点的指针域 }ListNode; typedef ListNode * LinkList; // 自定义LinkList单链表类型 LinkList CreatListR1(); //函数,用尾插入法建立带头结点的单链表 LinkList CreatList(void); //函数,用头插入法建立带头结点的单链表 ListNode *LocateNode(); //函数,按值查找结点 void DeleteList(); //函数,删除指定值的结点 void printlist(); //函数,打印链表中的所有值 void DeleteAll(); //函数,删除所有结点,释放内存

质量管理体系运行情况报告

神威公司2011上半年度质量管理体系运行情况报告 公司董事会: 自2011年1月公司实行了GB/T 19001—2008标准已半年,通过半年的运行,实施并保持了符合公司实际的质量管理体系。半年以来,公司实施了一次内审和一次管理评审。健全了自我完善机制,实现了持续改进。 现将半年多来质量体系运行情况报告如下: 一、质量方针和各部门质量目标执行情况: 由公司制定并发布和执行的质量方针和质量目标,坚持了以顾客为关注焦点的理念,明确了公司开展质量管理的指导思想和基本准则,体现了持续改进质量体系有效性的要求。公司的质量目标是对质量方针中顾客的期望和需求的进一步展开,既追求高水平,又保证能够实现。经过半年来的运行,与质量体系有关的员工已能够准确地理解公司的质量方针和质量目标,并在各项质量活动中贯彻执行。我们认真地管理,跟踪质量方针和质量目标的实施,及时地纠正偏离质量方针的现象。至今为止,公司质量目标已基本实现。合同履约率已达到98%、顾客满意率达到95%以上。在实现上述质量方针和质量目标的初始阶段,公司各部门各部门都制定了目标分解考核表,综合管理部根据其目标完成情况分别进行了考核,并制定相应的考核表,考核结果全部合格。 二、文件管理和执行情况 半年来,根据公司实际情况,对体系文件做了适当修改,使之更具有可操作性。综合管理部做好公司文件和记录的归口管理、登记下发,负责起草公司的所有文件和规章制度,经总经理审批后,下发到各部门,从文件编写、审核、批准发放、更改等全过程实施控制,做到文件保管严格受控,以防丢失和损坏。各部门工作中严格执行文件精神,全体员工严格遵守公司制定的各项规章制度,做到分工明确,奖惩严明。 三、纠正、预防措施的实施情况 对于一次内审和一次管理评审中发现的问题均通过原因分析,制定纠正措施,并得到了有效实施。 今年4月公司进行了本年度内审,内审中共开具4项不合格报告,但均是一般不合格项。 四、人力资源管理工作情况 为了达到公司所有从事与质量有关人员的能力能够达到要求相应岗位的要求,我们加强了对公司技术人员、部门经理及全体员工的培训工作,以满足规定的要求。具体做了如下工作: 1、为了达到公司对人才及技术人员的需求,我们加强了对公司技术人员、部门经理及各类人才的培训。制定了公司的人力资源管理制度,对公司职工进行规范化管理,

C语言链表实验报告

链表实验报告 一、实验名称 链表操作的实现--学生信息库的构建 二、实验目的 (1)理解单链表的存储结构及基本操作的定义 (2)掌握单链表存储基本操作 (3)学会设计实验数据验证程序 【实验仪器及环境】计算机 Window XP操作系统 三、实验内容 1、建立一个学生成绩信息(学号,姓名,成绩)的单链表,按学号排序 2、对链表进行插入、删除、遍历、修改操作。 3、对链表进行读取(读文件)、存储(写文件) 四、实验要求 (1)给出终结报告(包括设计过程,程序)-打印版 (2)对程序进行答辩

五、实验过程、详细内容 1、概念及过程中需要调用的函数 (1)链表的概念结点定义 结构的递归定义 struct stud_node{ int num; char name[20]; int score; struct stud_node *next; }; (2)链表的建立 1、手动输入 struct stud_node*Create_Stu_Doc() { struct stud_node *head,*p; int num,score; char name[20]; int size=sizeof(struct stud_node); 【链表建立流程图】

2、从文件中直接获取 先建立一个 (3)链表的遍历 (4 )插入结点 (5)删除结点 (6)动态储存分配函数malloc () void *malloc(unsigned size) ①在内存的动态存储区中分配一连续空间,其长度为size ②若申请成功,则返回一个指向所分配内存空间的起始地址的指针 ③若申请不成功,则返回NULL (值为0) ④返回值类型:(void *) ·通用指针的一个重要用途 ·将malloc 的返回值转换到特定指针类型,赋给一个指针 【链表建立流程图】 ptr ptr ptr->num ptr->score ptr=ptr->next head pt r s s->next = ptr->next ptr->next = s 先连后断 ptr2=ptr1->next ptr1->next=ptr2->next free (ptr2)

产品质量状况分析报告

产品质量状况分析报告 篇一:产品质量状况分析报告 无锡市宏杰电器配件厂 HJ-D-PZ-059A ------管理评审输入汇报资料部门:品质部 主题:产品质量控制 标题:2011年1月-20XX年2月产品质量状况分析报告 产品质量状况分析报告 质量是企业的生命,是企业的生存,为了实现企业的转型,提高企业的竞争能力,2010年年初我司引入新的更高标准的质量管理体系—TS-16949。体系推行之初,我司通过加强内部管理、事先预防、持续改进等一系列措施来提高产品质量。截止20XX年2月底,全面完成了公司下达的各项指标。在顾客投诉方面,年初接到一起不合格产品的信息,通过我们的售后服务,及时得到了解决,顾客比较满意。 从原辅材料的入厂到成品出厂都严格按体系标准执行,在各工序之间制定了质量控制标准。确定了监督人员,对特殊过程的人员及设备进行了严格的检定,对过程加强了信息反馈机制,使各个过程持续受控进行。

自从执行了TS-16949质量管理体系以来,我公司的产品受到了顾客的一致好评,未发生过一次严重质量事故,而且比体系执行以前产品质量更加稳定,各项指标均有很大改观。从2011年1月至20XX年2月总体产品质量情况如下: 各部门质量目标实现结果: 1、采购部:物资供货及时率100% 2、仓储部:交货及时准确率100% 3、品质部:出厂产品合格率 100% 顾客满意度>85分 产品质量与前年同期相比,产品交付合格率有了明显提高,充分证明了我公司的质量水平上了一个新的台阶。但过程检测合格率仍有待进一步提高,拟再增加两名检验人员,加强过程检测。 通过对供方的调查,我们对供方的生产能力和产品质量保证能力有了较感性的认识。有助于我们选择优秀的合作伙伴,为延续监控合格供方的供货业绩,我们设计了《合格供方年度质量评价表》,每月统计各合格供应商的供货数量和供货质量。有效监控了原物料的及时性和合格率。2011.1-20XX.2物料供货及时率均为100%。前年在供货能力和质量保证能力,通过比较各部门的综合评定,最终确定、保留了比较好的合格供方,比如苏州禾昌、宁波华彩等。

链表基本操作实验报告

实验2 链表基本操作实验 一、实验目的 1.定义单链表的结点类型。 2.熟悉对单链表的一些基本操作和具体的函数定义。 3.通过单链表的定义掌握线性表的链式存储结构的特点。 二、实验内容与要求 该程序的功能是实现单链表的定义和主要操作。如:单链表建立、输出、插入、删除、查找等操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。程序中的单链表(带头结点)结点为结构类型,结点值为整型。 要求: 同学们可参考指导书实验2程序、教材算法及其他资料编程实现单链表相关操作。必须包括单链表创建、输出、插入、删除操作,其他操作根据个人情况增减。 三、算法分析与设计。 1.创建单链表: 头结点L

...... 2.单链表插入

s s->data=x; s->next=p->next; p->next=s; 3.单链表的删除: p->next=p->next->next;

四、运行结果 1.单链表初始化 2.创建单链表 3.求链表长度 4.检查链表是否为空 5.遍历链表 6.从链表中查找元素 7.从链表中查找与给定元素值相同的元素在顺序表中的位置

8.向链表中插入元素 插入元素之后的链表 9.从链表中删除元素 删除位置为6的元素(是3) 10.清空单链表 五、实验体会 经过这次单链表基本操作实验,自己的编程能力有了进一步的提高,认识到自己以前在思考一个问题上思路不够开阔,不能灵活的表达出自己的想法,虽然在打完源代码之后出现了一些错误,但是经过认真查找、修改,最终将错误一一修正,主要是在写算法分析的时候出现了障碍,经过从网上查找资料,自己也对程

质量控制分析报告

2015年度质量控制分析报告 依据《质量手册》第四版第5章?“结果的质量控制”,《程序文件》第四版“质量控制程序”按照年度质量控制计划,我所对影响结果质量的各项因素进行了监控检查,现对全年监控控制进行分析。 1、人员培训与考核 1.1、上半年,业务室组织全所技术人员对18项检验参数的检验方法进行了集中学习,进一步加强加深技术人员的检验技能。 1.2、8月份全所人员对《检验检测机构资质认定评审准则》和新改版的《质量手册》《程序文件》等体系文件进行了学习讨论,使我所新版的体系文件顺利实施。 1.3、10-11月份,我所全体人员有对2015版药典进行了系统学习。 2、实验室间比对实验 5月29日~6月8日参加了由商丘市食品药品检验所组织的全市食药检系统实验室间比对实验。通过对比对样品的检测,验证了我所从组织计划、检测试验到结果分析,均得到了有效控制,结果表明,我所仪器设备检测能力、技术人员操作水平均达到了满意的效果。 3、质量监督检查 由质量负责人和质量监督员按照质量监督计划于10月份对我所的人员管理、设施设备、标准物质及内务管理等方面进行了检查,对在检查中发现的问题进行了及时纠正。

4、样品再检测 11月上旬,我所组织人员对本年度检验留样按照相同样品不同方法、不同检验人员进行了再次检验,通过对典型样品检验结果比对,再次验证了我所仪器设备的检测能力、技术人员的操作水平均达到了满意的效果 5、内审和管理评审 依据《检验检测机构资质认定评审准则》和新改版的《质量手册》《程序文件》,我所于11月下旬进行了内部质量审核和管理评审。通过审核证明了我所的质量方针与目标在保障人民用药安全有效方面,符合《药品管理法》及实施办法要求,符合《计量法》和《检验检测机构资质认定评审准则》等有关计量法律法规的要求。本机构建立的质量体系符合《检验检测机构资质认定评审准则》的要求。质量体系文件对质量活动的控制,充分体现了有效性和适应性。

相关主题
文本预览
相关文档 最新文档